[英]MySQL: Add a condition on a subquery from a joint table
roomId
) roomName
) activeUsers
) totalUsers
) 提供以下表格結構:
Table:users
+---------+-------------------------+
| id(int) | active(bool/tiny int) |
+---------+-------------------------+
Table:rooms
+---------+----------------------+
| id(int) | name(varchar(255)) |
+---------+----------------------+
Table:room_members
+-------------+---------------+
| userId(int) | roomId(int) |
+-------------+---------------+
到目前為止,我對SQL有點迷茫:
SELECT
rooms.id,
rooms.name,
(SELECT SUM(users.active) FROM users WHERE room_members.roomId = rooms.id) activeUsers,
(SELECT COUNT(users.id) FROM users WHERE room_members.roomId = rooms.id) totalUsers
FROM room_members
INNER JOIN rooms
ON room_members.roomId = rooms.id
INNER JOIN users
ON room_members.userId = users.id
WHERE room_members.userId = 1
根據這些數據:
我可以得出結論,我得到了錯誤的結果。
我想我需要你們的幫助。
您可以使用帶有分組依據的動態表(以及用戶和room_members之間的聯接)
SELECT
rooms.id,
rooms.name,
t1.activeUsers,
t1.totalUsers
FROM room_members
INNER JOIN rooms ON room_members.roomId = rooms.id
INNER JOIN users ON room_members.userId = users.id
INNER JOIN (
SELECT roomId, SUM(users.active) as activeUsers, COUNT(users.id) as totalUsers
FROM users
INNER JOIN room_members on users.id = room_members.userId
group by roomId
) t1 on t1.roomID = rooms.id
WHERE room_members.userId = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.