真正的问题
涉及的表及其列
accounts [id,name]
rooms [id,name,topic,owner]
room_admins [account_id,room_id]
问:获取所有房间及其管理员和所有者 ID。
“所有”当然有条件(上图:WHERE name LIKE ...)管理员和所有者应该在一个名为“admins”的列中返回。我试图将它们连接成一个字符串。
我试过的
我想出了一个解决方案,但它需要使用一个无所不在的外部变量“:room_id”,它会在每个外部 SELECT 上发生变化,因此根本没有意义。
SELECT id,name,topic,
(SELECT GROUP_CONCAT(admins.account_id) AS owner
FROM
(SELECT account_id
FROM `room_admins`
WHERE room_id=:room_id
UNION
SELECT owner FROM `rooms` WHERE id=:room_id) admins) AS owner
FROM `rooms`
WHERE name LIKE "%htm%" OR topic LIKE "%htm%" LIMIT 20