Comment faire une jointure avec plusieurs entrées ? - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Comment faire une jointure avec plusieurs entrées ? (/showthread.php?tid=2683) |
Comment faire une jointure avec plusieurs entrées ? - Arathor - 14-06-2008 Bonjour, J'ai récemment mis au point ma base de donnée (cf ce topic) et j'ai une petite question. Dans ma table colonie, j'ai l'ID de la colonie, de même, dans ma table colonie_ressources je retrouve ce champ, et j'ai ainsi une entrée pour chaque ressource présente sur ma colonie (puisque une autre table (ressource) possède un ID pour chaque ressource et ma table colonie_ressources contient uniquement l'ID de la colonie, l'ID de la ressource et le nombre)... Enfin bref, en gros j'ai une table avec un ID, et une autre table avec plusieurs entrée pour ce même ID, et j'aimerais pouvoir, en utilisant les jointures, selectionner tout ça dans une seule variable, ou plus précisément dans un seul array, car jusqu'ici je n' ai réussi à obtenir qu'un array dans lequel j'avais les données de ma première table avec seulement la première entrée de ma seconde table (je pense que c'est plus clair comme ça). Comment puis-je faire ceci ? il doit bien exister une fonction spéciale mais je ne l'ai pas trouver... RE: Comment faire une jointure avec plusieurs entrée ? - Jon04 - 15-06-2008 Slt, tu devrais trouver ton bonheur ici: Jointure mysql RE: Comment faire une jointure avec plusieurs entrée ? - Arathor - 15-06-2008 J'ai peut être mal lu, mais il me semble que ça ne parle que de jointures par colonnes. Dans mon cas je souhaite joindre une ligne d'une table avec plusieurs lignes d'une autre table... RE: Comment faire une jointure avec plusieurs entrées ? - Ruz - 15-06-2008 donne un exemple avec les champs des tables qui t'intéresse, et le lien entre les ID, on va te l'expliquer sur du concret, la jointure ^^ RE: Comment faire une jointure avec plusieurs entrées ? - Shakkah - 15-06-2008 Je ferais la requete comme cela pour ma part Code : SELECT Ce que ta besoin Puis pour récup tes résultats un classique Code PHP :
RE: Comment faire une jointure avec plusieurs entrées ? - Eluox - 15-06-2008 Il manque un JOIN pour colonie_ressource non ? C'est vraii que sa serait pas mal d'avoir la constitution de ta BDD, pour nous aider RE: Comment faire une jointure avec plusieurs entrées ? - Ruz - 15-06-2008 je me trompe peut-etre, mais une colonie sans ressource va faire planter ta requete, non? Perso, j'dirais un truc du genre: SELECT r.ID, r.nom, r.cat, cr.quantité FROM colonie c LEFT JOIN colonie_ressource cr ON c. ID=cr.ID_colonie LEFT JOIN ressource r ON cr.ID_ressource=r.ID WHERE c.ID=$variable_ID_colonie$ ORDER BY r.cat, r.nom ASC bon, maintenant, j'ai tjs pas ta structure, donc ^^ RE: Comment faire une jointure avec plusieurs entrées ? - Arathor - 15-06-2008 Alors voici ma structure : J'ai donc une table colonie, une table ressources, et une table colonie_ressources qui fait le lien entre les deux. Je souhaiterais obtenir quelque chose comma ça : Le problème, c'est que je n'arrive pas à joindre les 3 entrées de ma table colonie_ressources à ma table colonie, au mieux je parviens à en joindre une seule (la première)... ou alors, j'ai 3 arrays : dans le premier j'ai ma table colonie puis la 1è ressource de ma table colonie_ressources, dans le second toujours ma table colonie avec cette fois la seconde ressource de colonie_ressources et etc... J'ai essayer les requêtes que vous m'avez proposer et j'ai aussi chercher de mon coter mais sans résultat... RE: Comment faire une jointure avec plusieurs entrées ? - Shakkah - 15-06-2008 @Ruz: effectivement s'est bien possible que ça fasse planté ^_^, je suis pas trop doué avec les left et right join ^_^ Alors, la requete doit etre ce style là : Code : SELECT * //Pas bien mais bon tu veux tous à priori ^_^ Je réfléchi pour voir si c'ets tehcniquement possible de retourner plusieurs ligne d'une table en une ligne Si ça marche pas une tel requête te retourne quoi ? EDIT: je viens de relire ton message donc ne tiens pas compte de ce que j'ai dis, c'est ce que tu dois déjà faire. Je regarde de mon coté si ce que tu veux faire est possible. RE: Comment faire une jointure avec plusieurs entrées ? - Ruz - 15-06-2008 oublie... Je ne pense pas que tu puisses sortir TOUT en une seule ligne... (d'ailleurs: quel intéret??? comment traiterais-tu les champs? (longueur variable)) tu sortiras les résultats par "unité", soit, ici, par ressource. au mieux, tu peux sortir: ID_joueur / ID_colonie (que j'appellerais ID dans la table colonie) / Nom_colonie / ID_ressource / Nombre bref: 9 / 1 / Ma colonie / 1 / 50 9 / 1 / Ma colonie / 3 / 35 9 / 1 / Ma colonie / 2 / 20 3 lignes d'office ^^ m'enfin, a la réception, c'est pas plus compliqué à traiter, hein ^^ (meme plus simple: comment traiterais-tu ta réponse recherchée???) allez, pour le fun, l'exmple par le code: Code PHP :
PS2: code explicatif, pas testé du tout PS3: je me relis, alors, je recommente ^^ Bref: il est possible de relire le nom des champs retourné, je pense... je connais pas la fonction, mais je pense que c'est possible... DOnc, ton idée pourrait *théoriquement* etre traitée... |