[英]SQL group results as a column array
這是一個SQL問題,不知道使用哪種類型的JOIN,GROUP BY等,它是用於聊天程序,其中消息與房間相關,並且房間中的每一天都與成績單等相關聯。
基本上,在輸出我的成績單時,我需要顯示哪些用戶在該成績單上聊了聊。 目前我通過這樣的消息鏈接他們:
SELECT rooms.id, rooms.name, niceDate, room_transcripts.date, long
FROM room_transcripts
JOIN rooms ON room_transcripts.room=rooms.id
JOIN transcript_users ON transcript_users.room=rooms.id AND transcript_users.date=room_transcripts.date
JOIN users ON transcript_users.user=users.id
WHERE room_transcripts.deleted=0 AND rooms.id IN (1,2)
ORDER BY room_transcripts.id DESC, long ASC
結果集如下所示:
Array
(
[0] => Array
(
[id] => 2
[name] => Room 2
[niceDate] => Wednesday, April 14
[date] => 2010-04-14
[long] => Jerry Seinfeld
)
[1] => Array
(
[id] => 1
[name] => Room 1
[niceDate] => Wednesday, April 14
[date] => 2010-04-14
[long] => Jerry Seinfeld
)
[2] => Array
(
[id] => 1
[name] => Room 1
[niceDate] => Wednesday, April 14
[date] => 2010-04-14
[long] => Test Users
)
)
我想雖然數組中的每個元素代表一個腳本條目,並且用戶要在數組中分組作為條目的元素。 所以'long'將是一個列出所有名字的數組。 可以這樣做嗎?
目前我只是追加名稱,當成績單日期和房間發生變化時,我會追溯回復它們,但我會對文件和突出顯示的消息做同樣的事情並且它很混亂。
謝謝。
您不能在結果中將數組作為long
字段,因為每個數組元素表示表中的一行。 但是,您可以使用連接的字符串,並在需要時拆分字符串。 查詢將如下所示:
SELECT rooms.id, rooms.name, niceDate, room_transcripts.date, group_concat(long) as long
FROM room_transcripts
JOIN rooms ON room_transcripts.room=rooms.id
JOIN transcript_users ON transcript_users.room=rooms.id AND transcript_users.date=room_transcripts.date
JOIN users ON transcript_users.user=users.id
WHERE room_transcripts.deleted=0 AND rooms.id IN (1,2)
GROUP BY room_transcripts.id
ORDER BY room_transcripts.id DESC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.