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 :
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
Cela me semble bien compliqué...
Y-a-til une solution plus élégante ?