mysql:Aide

Discussion dans 'Programmation' créé par islam99, 19 Juin 2010.

  1. islam99

    islam99 Accro

    J'aime reçus:
    1420
    Points:
    113
    Salam 3alaykoum,

    j'ai une base de donnée ki contient 4 tables et je veux créer en une seule requete une autre ki fusionne entre les 4, sachant k'il y a des champs identique entre ces tables.

    j'ai essayé la requête: create table resultat
    select*from ensemple des table
    mais ca marche po, par ce qu'il ya des champs multiples

    j'ai essayé aussi la jointure mais on me crée une table qui fusionne entre champs mais sans valeurs.

    ach khasni ndir...
    merci d'avance.


     
  2. Astalavista

    Astalavista Hasta La Vista Baby

    J'aime reçus:
    46
    Points:
    48
    Bonjour,

    Ca serait possible d'avoir la structure de ta bdd?
     
  3. islam99

    islam99 Accro

    J'aime reçus:
    1420
    Points:
    113

    la voila:

    [​IMG]
     
  4. islam99

    islam99 Accro

    J'aime reçus:
    1420
    Points:
    113
    excuse mon retard j'ai un pb de conex.


    create table resultat
    select c.numclient, nom, prenom, adresse, co.numcommande, Dte, p.numproduit, Qtecommande, nomprod, PrixUnit, Qtestock
    from clients c, commandes co, detcommandes d, produits p
    where c.numclient=co.numclient
    and p.numproduit=d.numproduit
    and co.numcommande=d.numcommande


    j'ai essayé de faire la jointure entre les 4 tables mais ca marche pas, ma3raftch fin lmouchkil?:confused:
     
  5. anasamati

    anasamati Accro

    J'aime reçus:
    109
    Points:
    63
    essaie ça,


    create table resultat
    select c.numclient, c.nom, c.prenom, c.adresse, co.numcommande, co.Dte, p.numproduit, d.Qtecommande, p.nomprod, p.PrixUnit, p.Qtestock
    from clients c, commandes co, detcommandes d, produits p
    where c.numclient=co.numclient
    and p.numproduit=d.numproduit
    and co.numcommande=d.numcommande
     
  6. islam99

    islam99 Accro

    J'aime reçus:
    1420
    Points:
    113

    ça donne le mm resultat, des champs vides!![55v]
     
  7. anasamati

    anasamati Accro

    J'aime reçus:
    109
    Points:
    63
    Mais les autres tableaux sont deja remplis, non?
     
  8. RedEye

    RedEye - أبو عبدالرحمن - Membre du personnel

    J'aime reçus:
    4153
    Points:
    113
    il ne faut pas oublier le mot clé "AS"

    create table resultat
    select c.numclient, c.nom, c.prenom, c.adresse, co.numcommande, co.Dte, p.numproduit, d.Qtecommande, p.nomprod, p.PrixUnit, p.Qtestock
    from clients AS c, commandes AS co, detcommandes AS d, produits AS p
    where c.numclient=co.numclient
    and p.numproduit=d.numproduit
    and co.numcommande=d.numcommande


    --------------------------------------

    quand tu as des tables avec des noms de champs identiques, et tu veux faire des jointures entre elles, il faut précéder le nom de chaque champ par le nom de sa table pour enlever l'ambiguité, par exemple :

    select nom ==> select user.nom

    mais parfois tu as les noms des tables et des champs qui sont long, et cela risque d'avoir une requete longue, alors pour faire facile, il y a les alias, tu peux donner des alians aux noms des tables et champs, et pour cela tu utilise le mot clé AS, par exemple :

    SELECT u.nom FROM user AS u

    généralement pour faire facile, on utilise la première ou les 2 premières lettre du nom de la table comme alias

    tu peux faire aussi un alias pour le nom du champ, par exemple :

    SELECT a.title, c.title AS category FROM articles AS a, catgories AS c

    ici, quand tu va afficher le résultat , tu va utiliser category pour le titre de catégorie


    c des règles de sql standard
     
  9. RedEye

    RedEye - أبو عبدالرحمن - Membre du personnel

    J'aime reçus:
    4153
    Points:
    113
    je voudrais ajouter autre chose, c juste un + pour avoir du code plus lisible et plus organisé :

    - les mots clés du langage SQL, écrit les en majuscules : SELECT, INSERT, FROM, AS ...etc

    - quand tu nomme tes tables, et leurs champs, utilise le souligné "_", par exemple : nom_prod, au lieu de NomProd, car ,pour mysql pour les noms des champs et tables, il ne fait pas de différence entre majuscule et minuscule

    - pour les noms des tables et des champs, évite d'utiliser les mots clé du langage SQL, par exmple : date, time, desc (pour signifier description), etc...
     
  10. islam99

    islam99 Accro

    J'aime reçus:
    1420
    Points:
    113


    pour la jointure je pense ke c'est pas la peine d'utilisé le AS car j'ai essayé de faire la jointure entre 3 tables et ca marché, le pb ke j'ai trouvé c'est de fusionner les 4. hadchi li 7amma9ni.

    et pour les alias on les precedent des champs qui sont identiques et c'est ce ke j'ai fait pr la première requete.[19h] sinon mab9it fahma walo.

    Merci pour ton aide
     
  11. anasamati

    anasamati Accro

    J'aime reçus:
    109
    Points:
    63
    @RedEye: AS est optionnel
     
  12. islam99

    islam99 Accro

    J'aime reçus:
    1420
    Points:
    113

    oui, mais mon but c'est de remplir la table de jointure 'resultat'[55v]
     
  13. RedEye

    RedEye - أبو عبدالرحمن - Membre du personnel

    J'aime reçus:
    4153
    Points:
    113
    essaie au début de faire : CREATE TABLE resultat FROM
    même si c optionnel faut pas l'ommetre, faut toujour avoir un code lisible facilement pour bien discerner les erreurs
     
  14. anasamati

    anasamati Accro

    J'aime reçus:
    109
    Points:
    63
    donne moi ce ke tu as dans chaque tableau, ça veut dire les champs remplis
     
  15. RedEye

    RedEye - أبو عبدالرحمن - Membre du personnel

    J'aime reçus:
    4153
    Points:
    113
    écoute, exporte nous la structure et les données de ta base avec tes 4 tables, si elles ne sont pas très remplies, ou bien si les données ne sont pas confidentielles
     
  16. islam99

    islam99 Accro

    J'aime reçus:
    1420
    Points:
    113
    ce sont po des données confidetielles, c'est des tables de 4 lignes..ghir avant de vous poster les donner...

    une amie a essayer la mm requete f sql server est ca marché donc lpb f les données:eek:
    ????????
     
  17. anasamati

    anasamati Accro

    J'aime reçus:
    109
    Points:
    63
    oui c pour ça que je t'ai dis de me donner les champs, pour vérifier, parceque s'il n ya pas de coincidence il y aura des champs vides
     
  18. RedEye

    RedEye - أبو عبدالرحمن - Membre du personnel

    J'aime reçus:
    4153
    Points:
    113
    ca peut être un probleme de langage sql, car il y a toujour des changements entre les versions d'un meme sgbd

    tu a quelel version de mysql ?
     
  19. islam99

    islam99 Accro

    J'aime reçus:
    1420
    Points:
    113
    mysql server 5.0

    je pense ke je vais creer une autre bdb avec d'autres données, sinon ranb9a hna, ce n'est que la première requete, il me reste 17 requetes et il faut rendre le travail le lundi
    [19h]

    ya salaaaaaaaam

    yak?
     
  20. anasamati

    anasamati Accro

    J'aime reçus:
    109
    Points:
    63
    Un conseil, il faut bien remplir les tableaux, parceque sinon tu n'auras que des champs vides dans les requetes.
    Mais, le prof ne vous donne pas les tableaux deja remplis?
     

Partager cette page