2016-06-10 22 views
-1

Ich habe 2 Tabellen in einer MySQL-Datenbank („Kommentare“ und „Antworten“)Mysql wählen Zeilen aus mehreren Tabellen in einer bestimmten Reihenfolge

Sie haben die Schemata:

comments: id,userId,text 
replies: id,userId,commentId,text 

Ich brauche eine MySQL-Abfrage dass alle Kommentare aus der Kommentartabelle holen, und nach jedem Kommentar, den entsprechenden Antworten der Antworten Tabelle ...

also, wenn wir hatten: [comment 1] and [comment 2] in the comments table, and [reply 1] (to comment 1) and [reply 2] (to comment2) in den Antworten Tabelle

dann wäre es zurück:

[comment 1] 
    [reply 1] 
    [comment 2] 
    [reply 2] 
+0

Sie könnten mit 'group_concat' herumspielen. – Solarflare

+0

@Solarflare - so verstehe ich die Frage Daniel möchte die Antworten in Zeilen nach den Kommentaren erhalten - group_concat würde verwendet werden, um eine einzelne Spalte mit allen Antworten darin zu erstellen. – PaulF

+0

@PaulF Ja, ich denke du hast recht, ich habe das falsch verstanden. Ihre Gewerkschaftslösung sollte funktionieren. – Solarflare

Antwort

2

Sie würden die beiden Tabellen & dann, um auf der Grundlage der commentID & ReplylD für mehrere Antworten kommen müssen.

Im Folgenden habe ich eine Dummy-ReplyID von 0 für den ursprünglichen Kommentar hinzugefügt. Die Tabellen werden mit UNION ALL verknüpft. Beachten Sie, dass ich die ursprüngliche ID-Spalte der Kommentartabelle & reply id umbenannt habe, damit sie nicht kollidieren.

SELECT id commentID, userID, text, 0 replyID FROM test.comments 
UNION ALL 
SELECT commentID, userID, text, id replyID FROM test.replies 
ORDER BY commentID, replyID; 
+0

Korrekte Antwort, nur das heißt nicht "Beitritt", sondern "Kombinieren Ergebnismengen". –

+0

@ThorstenKettner - natürlich hast du recht - nur meine schlechte Wortwahl beim Erklären meiner Antwort. – PaulF

Verwandte Themen