2016-08-03 15 views
0

Also, ich habe ein ziemlich unkonventionelles Problem. Ich möchte Zeilen mit der gleichen ID in einer großen Reihe verketten können. Um mein Problem zu illustrieren, lassen Sie mich ein Beispiel geben. Hier ist die Abfrage:PostgreSQL: So verketten Zeilen

SELECT b.id AS "ID", 
     m.content AS "Conversation" 
FROM bookings b 
INNER JOIN conversations c on b.id = c.conversable_id AND c.conversable_type = 'Booking' 
INNER JOIN messages m on m.conversation_id = c.id 
WHERE b.state IS NOT NULL 
GROUP BY 1,2 
LIMIT 1000; 

Und hier ist die Ausgabe:

ID  **Conversation 
1223 "blah, blah, blah, blah" 
1223 " ... blaaaah, blah.." 
1223 "more blaaah" 
1223 "last blah" 
5000 "new id, with more blah" 
5000 "and the blah continues" 

Gibt es einen Weg, um die Konversation Zeilen in einem Aggregat Reihe zu verketten, während die ID zu halten?

So:

ID  Conversation 
1223 "blah, blah, blah, blah, ... blaaaah blah.. more blaaah, last blah" 
5000 "new id, with more blah and the blah continues" 

Ich bin sicher, dass es ein effizienter Weg, dies zu tun. Ich kann es alleine nicht herausfinden.

+0

'group_concat()' ist dein Freund. – wildplasser

+0

Ist das nicht MySQL? – DBE7

+0

Könnte sein. Vielleicht 'string_agg()', dann? – wildplasser

Antwort

0

Ich konnte mein eigenes Problem lösen, indem ich mir die brillianten Antworten auf this question ansah. Es war so einfach wie die Verwendung der PostgreSQL string_agg()-Funktion.

Verwandte Themen