Bonjour,
je suis face à une situation plus que classique : j'ai deux tables A et B associées l'une à l'autre par une table de relation a_has_b .
Un élément de A est associé à plusieurs lignes dans B.
Mon objectif est pour une ligne donnée de A, obtenir cette ligne plus l'ensemble des champs `noms` des lignes de B correspondantes concaténés entre eux et séparés par une virgule.
Ex :
----------------------
| id | b_names |
----------------------
| 10 | toto, tata |
----------------------
Ce problème étant j'imagine très courant, je suppose qu'il doit y avoir un pattern pour le résoudre non?
Voilà la manière dont je procède :
Cela me semble bien compliqué...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT a.*, d.names as b_names FROM a LEFT JOIN ( SELECT GROUP_CONCAT( name ) AS NAMES, ida FROM ( SELECT b.name AS name, ahb.a_ida as ida FROM a_has_b AS ahb LEFT JOIN b ON b.idb = ahb.b_idb WHERE a_ida = 10 ) AS list) AS d on d.ida = a.ida WHERE a.ida = 10
Y-a-til une solution plus élégante ?
Partager