MySQL-Eins-zu-Viele-Verknüpfung mit Group By gibt nur eine Beobachtung zurück

7

Ich habe eine Kommentartabelle und eine Tag-Tabelle. Für jeden Kommentar können mehrere Tags oder keine Tags vorhanden sein. Ich möchte den beiden beitreten, damit ich eine Liste mit Tags für jeden Kommentar erhalten kann.

Kommentartabelle:

%Vor%

TagTabelle:

%Vor%

Eine Abfrage sollte also die Tags (5,6) für eine commentID == 1 und ein leeres Array für CommentID == 2

zurückgeben

Dies ist, was ich habe - es wählt nur die letzte ID und keine Vielfachen:

%Vor%     
Justin 04.08.2012, 09:59
quelle

3 Antworten

21

Sie können GROUP_CONCAT verwenden Verwandeln Sie Daten in mehreren Zeilen in eine einzige Zeichenfolge mit Trennzeichen:

%Vor%

Wenn in diesem Fall ein Kommentar kein entsprechendes Tag hat, wäre das Feld einfach NULL.

SQLFiddle-Demo

    
Zane Bien 04.08.2012, 10:44
quelle
1

versuche das:

%Vor%

edit1: Wenn Sie nur eine Zeile pro Gruppe nach dem Kommentar zurückgeben wollen

%Vor%     
Joe G Joseph 04.08.2012 10:03
quelle
-1

Sie brauchen die Gruppe nicht für diese Situation:

%Vor%     
XN16 04.08.2012 10:03
quelle

Tags und Links