【发布时间】:2019-01-02 19:30:22
【问题描述】:
我有以下表格:
聊天用户
chatId | userId |
---------|---------------|
1 | 1 |
1 | 2 |
2 | 1 |
2 | 3 |
聊天室
chatId |lastMessageTime|
---------|---------------|
1 | yesterday | //for example 1000000000
2 | today | //for example 1532473344
假设我是userId 1
我想加载我所在的所有聊天室。
由chatRooms.lastMessageTime订购 + 我想知道同一个聊天室中有哪些用户 (chatUsers.userId)
例如在这种情况下:
[{
"chatId": 2,
"users": [1, 3]
},
{
"chatId": 1,
"users": [1, 2]
}]
有可能吗?我已经设法在没有用户选择的情况下做到了:
$qry = $db->prepare('SELECT cr.chatId FROM chatRooms AS cr INNER JOIN chatUsers AS cu ON cu.chatId = cr.chatId WHERE cu.userId = :userId
ORDER BY cr.lastMessageTime DESC, cr.chatId DESC');
$qry->bindParam(':userId', $userId, PDO::PARAM_INT);
$qry->execute();
$chatRooms = $qry->fetchAll(PDO::FETCH_ASSOC);
但我无法在选择中进行子选择..
【问题讨论】:
-
在 MySQL 或任何我知道的 SQL 中没有嵌套结果。