为了简化我的问题:假设我有三个表。
Rooms People Things
-------- -------- --------
id| name id | name | fk_rooms id | name | fk_rooms
----------- --------------------- ---------------------
1 | kitchen 1 | John | 1 1 | TV | 2
2 | bedroom 2 | Mary | 2 2 | bed | 2
3 | Andy | 1 3 | sink | 1
4 | Laura| 1
现在我正在进行类似以下的操作:
SELECT r.name AS room_name, p.name AS name, t.name AS thing FROM Rooms r
LEFT JOIN People p ON p.fk_rooms = r.id
LEFT JOIN Things t ON t.fk_rooms = r.id
在我的情况下,这个方案非常完美,但对于一些与“房间”表存在多对一关系的内容却不行。所以,我希望结果集中的新行只包含与“房间”表相关的“人员”和“物品”的不同名称,而不是每个名称都有新行。
1. kitchen, John, Andy, Laura, sink
2. bedroom, Mary, TV, bed
在 r.id 上的 GROUP BY 只会从每个表中选择一行。非常感谢您的帮助!