Obtenir un tableau sans utiliser GROUP_CONCAT
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 :zen: ?
Voilà la manière dont je procède :
Code:
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 |
Cela me semble bien compliqué... :roll:
Y-a-til une solution plus élégante ?