MySQL un-à-plusieurs rejoindre le Groupe En retourne seulement une observation
J'ai un commentaire de la table et une balise table. Pour chaque commentaire, il pourrait y avoir plusieurs balises, ou aucun. Je tiens à joindre les deux si je peux obtenir une liste de tags pour chaque commentaire.
CommentTable:
+---------+----------+---+
|CommentID| Title | ..|
+---------+----------+---+
| 1 | animals| |
| 2 | plants | |
+---------+----------+---+
TagTable:
+---------+----------+---+
| TagID |CommentID | ..|
+---------+----------+---+
| 5 | 1 | |
| 6 | 1 | |
| 7 | 3 | |
+---------+----------+---+
Ainsi, une requête doit retourner les étiquettes, (5,6) pour un commentID == 1 et tableau vide pour CommentID == 2
C'est ce que j'ai - il ne sélectionne que le dernier ID et pas multiples:
SELECT c.CommentID, c.Title, t.TagID FROM Comment as c
LEFT OUTER JOIN Tag as t ON c.CommentID = t.CommentID
GROUP BY t.TagID
Lorsque vous faites un GROUPE, il doit contenir minimum toutes les données que vous avez sélectionnées.
OriginalL'auteur Justin | 2012-08-04
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
GROUP_CONCAT
à transformer les données en plusieurs lignes en une seule chaîne délimitée:Dans ce cas, si un commentaire n'est pas une balise correspondante, le champ devrait juste être NULL.
SQLFiddle Démo
OriginalL'auteur Zane Bien
essayez ceci:
edit1: Si vous voulez retourner une seule ligne par groupe selon le commentaire
plz vérifier maintenant
oui, mais est-il une manière que je peux retourner qu'une seule ligne pour un CommentID == 1 au lieu de deux? Actuellement, les deux lignes seront retournés avec chacun un TagID de 5 et 6 respectivement.
J'ai mis à jour la requête plz vérifier
Merci pour la mise à jour. Je pense que je me rapproche d'elle, bien que maintenant seulement TagID de 2 est retourné et non pas les deux (1,2) en une seule ligne. Je crois que cela se reflète dans l'utilisation, l'
MAX
dans leSELECT
OriginalL'auteur Joe G Joseph
Vous n'avez pas besoin du groupe pour cette situation:
OriginalL'auteur XN16