J'ai cette requête et j'ai besoin d'inclure une autre jointure sur une table appelée "likes" où updates.id = likes.update_id. Il y aura 0 ou plusieurs correspondances sur cette jointure. Ceci est probablement assez simple, mais je n'ai pas trouvé d'exemples pour ce genre de requête.MYSQL un à plusieurs JOIN
La situation est essentiellement que j'affiche une liste d'éléments. Je fais une jointure sur la table des utilisateurs pour récupérer l'utilisateur qui a créé chaque élément. J'ai également besoin de faire une jointure sur les tables "j'aime" pour afficher les 0+ personnes qui ont aimé chaque élément.
EDIT: Ma solution
Ok, voici le succès et rejoindre la combinaison des résultats en double (en raison du fait qu'il ya plusieurs « aime » pour chaque mise à jour) à l'aide GROUP_CONCAT.
"SELECT users.*,updates.update_id,updates.content,updates.status_time,
GROUP_CONCAT(likes.liker SEPARATOR ',') AS liked_by
FROM updates
LEFT OUTER JOIN likes ON updates.update_id = likes.update_id
JOIN users ON users.remote_id = updates.owner_id
GROUP BY updates.update_id
ORDER BY updates.status_time DESC
LIMIT 200"
vous prétendez être commander par updates.time, mais il n'y a pas de champ 'time' dans le resu lt - qu'est-ce qui donne là? –
En outre, il serait utile d'avoir la liste complète des colonnes pour chacune des trois tables. S'il existe une colonne users.id ainsi qu'une colonne updates.id, il se peut que vous voyiez uniquement users.id même si la jointure se trouve sur updates.id (l'un des principaux problèmes avec les noms de colonnes non uniques). –
Ouais, les noms de colonnes non-uniques causaient ma confusion. Je l'ai compris et mis à jour le message original avec la solution. Merci! – makeee