J'ai donc cette requête qui fonctionne parfaitement:MySQL JOIN/GROUP_CONCAT deuxième table?
SELECT users.*,
GROUP_CONCAT(categories.category_name) AS categories
FROM users
LEFT OUTER JOIN user_categories ON users.user_id = user_categories.user_id
LEFT OUTER JOIN categories ON user_categories.category_id = categories.category_id
WHERE users.user_city = 'brooklyn'
GROUP BY users.user_id
LIMIT 10;
Dire que j'ai une autre table qui contient les numéros de téléphone, pour les « utilisateurs », un utilisateur peut avoir un certain nombre de numéros de téléphone ... Comment pourrais-je aller sur faire autour de la même chose que je fais avec les catégories? En d'autres termes, je voudrais obtenir une autre colonne avec TOUS les phone_numbers trouvés dans la table "phones" qui ont le même "user_id" et les concaténer ensemble (phone1, phone2, phone3)? J'ai essayé:
SELECT users.*,
GROUP_CONCAT(phones.phone_number) AS phone_numbers,
GROUP_CONCAT(categories.category_name) AS categories
FROM users
LEFT OUTER JOIN phones ON users.user_id = phones.user_id
LEFT OUTER JOIN user_categories ON users.user_id = user_categories.user_id
LEFT OUTER JOIN categories ON user_categories.category_id = categories.category_id
WHERE users.user_city = 'brooklyn'
GROUP BY users.user_id
LIMIT 10;
Avec pas de chance ... ou tout au moins la requête exécute mais il fait quelque chose de duplication bizarre ... toute aide serait génial!
Merci!
Ok, cela fonctionne comme prévu ... Je voulais juste noter qu'il est nécessaire d'utiliser DISTINCT dans les deux GROUP_CONCATS – mike