SQL 组结果作为列数组

标签 sql sqlite pdo

这是一个 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

关于SQL 组结果作为列数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2640293/

相关文章:

如果 QTY > 1,则 MySQL 输出多行

mysql - 实现满足两个条件的Mysql子查询

python - 在 Peewee 中获取或创建

sqlite - 在不依赖 glib 的情况下使用来自 vala 的 sqlite

mysql - 连接不同表中的值时使用 GROUP_CONCAT 和 CONCAT

android - 返回 0

php - 使用 php PDO 执行 mysql PDO 语句

php - PDO、MySQL SELECT 语句返回 bool 值 true?

php - “PDOException”消息“SQLSTATE[22001] : String data, 右截断:0

sql - Linq to sql 双内连接语句