JeuWeb - Crée ton jeu par navigateur
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)

Pages : 1 2 3


RE: Comment faire une jointure avec plusieurs entrées ? - Shakkah - 15-06-2008

Voilà une requête qui récupérera exactement ce que tu veux sauf que perso je comprends pas l'utilité de vouloir une ligne au lieu de trois

Code :
SELECT ID_Joueur, ID_colonie AS idC , nom,
(SELECT ID_ressource from colonie_ressources WHERE ID_colonie = idC AND ID_ressource=1) AS ID_Nourriture,
(SELECT nombre from colonie_ressources WHERE ID_colonie = idC AND ID_ressource=1) AS Nb_Nourriture,
(SELECT ID_ressource from colonie_ressources WHERE ID_colonie = idC AND ID_ressource=2) AS ID_Bois,
(SELECT nombre from colonie_ressources WHERE ID_colonie = idC AND ID_ressource=2) AS Bois,
(SELECT ID_ressource from colonie_ressources WHERE ID_colonie = idC AND ID_ressource=3) AS ID_Briques,
(SELECT nombre from colonie_ressources WHERE ID_colonie = idC AND ID_ressource=3) AS Briques
FROM colonie
WHERE ID_Joueur=9



RE: Comment faire une jointure avec plusieurs entrées ? - Ruz - 15-06-2008

et qui n'est pas évolutive pour deux sous...
le jour où une 4e ressource apparait, faut refaire ta requete Sad

a moins que tu sois sur et certain que ca changera jamais... dans ce cas, ben, fais plus simple au niveau de la structure de ta BDD: une seule table...
Colonie:
ID/ID_joueur/Nom_colonie/Nourriture/bois/brique

non?


RE: Comment faire une jointure avec plusieurs entrées ? - Shakkah - 15-06-2008

Ruz a écrit :et qui n'est pas évolutive pour deux sous...
le jour où une 4e ressource apparait, faut refaire ta requete Sad

+1000000 avec ça

Mais on me demande une requête je la fait ^_^


RE: Comment faire une jointure avec plusieurs entrées ? - Ruz - 15-06-2008

t'inquiètes, tu m'a appris un truc ^^
(enfin, remémoré serait plus juste)


RE: Comment faire une jointure avec plusieurs entrées ? - z3d - 15-06-2008

Il n'existe aucune requête capable de retourner plusieurs lignes d'une table2 en une seule sur la table1.
Le seul solution restante étant la décomposition de la requête.
  1. Récupération des informations de la colonie
  2. Récupération de ses ressources



RE: Comment faire une jointure avec plusieurs entrées ? - pascal - 15-06-2008

z3d a écrit :Il n'existe aucune requête capable de retourner plusieurs lignes d'une table2 en une seule sur la table1.

si, c'est possible, en utilisant plusieurs fois la table 2 via des alias.

A+

Pascal


RE: Comment faire une jointure avec plusieurs entrées ? - z3d - 15-06-2008

@pascal > Exact, mais même méthode que Shakkah pas d'évolution possible. Obligé de manipuler le code à nouveau à l'ajout d'une ressource Confused


RE: Comment faire une jointure avec plusieurs entrées ? - Sephi-Chan - 15-06-2008

C'est la conception qui est mauvaise, dans ce cas.


RE: Comment faire une jointure avec plusieurs entrées ? - Arathor - 15-06-2008

Meci beaucoup pour vos réponses, globalement j'en tire comme conclusion que vais utliser la méthode retournant plusieurs ligne (ce que j'avais réussi à obtenir, mais ce que je ne trouve pas très pratique dans la mesure ou je pourrais avoir jusqu'à 20 ressources différentes pour chaque colonie, vous comprendrez d'ailleurs que la méthode propose pas shakka est inutilisable dans mon cas Wink ) Le principal finalement est de pouvoir obtenir ces informations grâce à une seule requête je pense ...


RE: Comment faire une jointure avec plusieurs entrées ? - Shakkah - 15-06-2008

Si le nombre de ressources que tu peux récupérer peux évoluer tu dois forcément faire la technique rendant plusieurs lignes.

Après c'est dans le code gérant le retour du sql que tu dois faire une méthode super générique pouvant gérer autant de ressources que tu veux et ne devant pas être modifier si tu rajoute des ressources.