Aller au contenu

SQL et fusion de résultat


elfaus

Sujets conseillés

Salut à tous,



j'essaye d'optimiser un script php afin de n'avoir à réaliser qu'une seule requête et récupérer toutes les informations nécessaires. J'ai découvert il y a peu group_concat mais je ne suis parvenu à le faire fonctionner que sur un seul champ.



Soit les deux tables sources suivantes :



Heroes



+----+-----------+------------+
| id| name_fr | name_us |
+----+-----------+------------+
| 1 | ababab | ababab |
| 3 | efefef | efefef |
+----+-----------+------------+

Schools



+----+-----------+-----------+
| id | name_fr | name_us |
+----+-----------+-----------+
| 3 | ababab | ababab |
| 5 | cdcdcd | cdcdcd |
| 9 | efefef | efefef |
+----+-----------+-----------+


Soit la table relationnelle suivante :

Heroes_Schools



+----+----+
| hid|sid |
+----+----+
| 1 | 3 |
| 1 | 5 |
| 3 | 9 |
+----+----+



L'idée, est de faire en sorte de récupérer un résultat similaire à celui-ci



+----+-----------+-----------+--------------------------------------------------+
| id| name_fr | name_us | schools |
+----+-----------+-----------+--------------------------------------------------+
| 1 | ababab | ababab | 3, ababab, ababab; 5, cdcdcd, cdcdcd |
| 3 | efefef | efefef | 9, efefef, efefef |
+----+-----------+-----------+--------------------------------------------------+

Afin de pouvoir par la suite faire un traitement de tableau en php et passer le contenu de schools en paramètre d'une autre class que celle réalisant la requête et stockant les information id, name_fr et name_us



Pour l'instant j'ai ça :



SELECT mch.id, mch.name_fr, mch.name_us, GROUP_CONCAT(mcs.id) AS schools_id, GROUP_CONCAT(mcs.name_fr) AS schools_name_fr, GROUP_CONCAT(mcs.name_us) AS schools_name_us

FROM mom_cards_heroes AS mch
LEFT JOIN mom_cards_heroes_schools AS mchs ON mch.id = mchs.heroesid
LEFT JOIN mom_cards_schools AS mcs ON mchs.schoolid = mcs.id
WHERE mch.`publish` = 1
GROUP BY mch.id
ORDER BY mch.factionid, mch.name_fr ASC

Mais pas suffisant x)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...