MySQL-eins-zu-viele " - join mit Group By gibt nur eine Beobachtung
Habe ich einen Kommentar-Tabelle und eine tag-Tabelle. Für jeden Kommentar, kann es mehrere tags, oder keine. Ich möchte die beiden so bekomme ich eine Liste der tags, die für jeden Kommentar.
CommentTable:
+---------+----------+---+
|CommentID| Title | ..|
+---------+----------+---+
| 1 | animals| |
| 2 | plants | |
+---------+----------+---+
TagTable:
+---------+----------+---+
| TagID |CommentID | ..|
+---------+----------+---+
| 5 | 1 | |
| 6 | 1 | |
| 7 | 3 | |
+---------+----------+---+
So, eine Abfrage zurückgeben soll die tags, (5,6) für eine commentID == 1 und leeres array für CommentID == 2
Dies ist, was ich habe - es wählt nur die Letzte ID und kein Vielfaches:
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
- Wenn Sie eine GRUPPE DURCH, er muss mindestens alle Daten, die Sie ausgewählt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
GROUP_CONCAT
zum umwandeln von Daten in mehrere Zeilen in einer einzigen, durch Trennzeichen getrennte Zeichenfolge:In diesem Fall, wenn ein Kommentar nicht über eine entsprechende tag-Feld würde nur NULL sein.
SQLFiddle Demo
versuchen Sie dies:
edit1: Wenn Sie zurückkehren möchten, nur eine Zeile pro Gruppe als pro den Kommentar
MAX
imSELECT
Brauchen Sie nicht die Gruppe, indem Sie für diese situation: