2011-01-19 101 views
0

如何組合兩條記錄,它們具有相同的列?例如,給定兩個記錄的parent列值是相同的,我想結合這兩個。這不可能與GROUP BY,因爲它只會返回一條記錄。將同一列中具有相同列值的2條記錄結合起來

這個任務必須在Rails中實現。

+3

什麼意思「俱樂部「 一個記錄? – 2011-01-19 16:21:23

回答

1

給定一個表messages這種結構和數據:

id parent_id message 
-- --------- ------- 
1 42   Foo 
2 42   Bar 

然後你就可以讓這個SQL查詢:

SELECT a.message AS message1, 
      b.message AS message2 
     FROM messages a 
INNER JOIN messages b ON a.parent_id=b.parent_id 
    WHERE a.id<b.id; 

而得到這樣的結果:

message1 message2 
-------- -------- 
Foo  Bar 

您需要確保a.idb.id是不一樣的,這樣你就不會得到結果"Foo Foo""Bar Bar",並且還需要除非你想同時"Foo Bar""Bar Foo"結果進行排序。

您也可以選擇直接在查詢中執行字符串連接。不同的RDBMS使用不同的語法; MySQL的,我相信這將是:

SELECT concat(a.message, b.message) AS clubbed_message 
     ... 

(爲了完整起見,MSSQL使用+操作字符串連接和PostgreSQL和SQLite使用||操作。)

0

據我所知,最好的選擇是查詢所有它們並將它們連接在Ruby land中。

喜歡的東西:

Model.where(:parent => 1).collect(&:message).join
相關問題