我有两张这样的桌子:
-----------------------------------------------------
| PLACES |
-----------------------------------------------------
| Id | Name | Address |
-----------------------------------------------------
| 1 | Parc | 20 King St |
| 2 | Bar | 33 Main St |
-----------------------------------------------------
-----------------------------------------------------
| PEOPLE |
-----------------------------------------------------
| Id | Place_id (fk) | Name |
-----------------------------------------------------
| 1 | 2 | Luke |
| 2 | 1 | Han |
| 3 | 1 | Chewie |
-----------------------------------------------------
我想展示每个地方及其相关人员。要做到这一点,我认为每个地方都有一个带有人员列表的记录会很棒(而不是每个人条目都有相同的地方)。
我真的不熟悉 SQL 查询,所以我尝试使用 Right Join 和 Group By 没有任何积极的结果。
SELECT plc.name, plc.address, plp.name
FROM places plc
RIGHT JOIN people plp
ON plp.place_id = plc.id
GROUP BY plc.name;
执行“$query->fetchAll();”后得到的结果 在 PHP 中是这样的:
Object {name: "Bar", address: "33 Main St", name: "Luke"}
Object {name: "Parc", address: "20 King St", name: "Han"}
Object {name: "Parc", address: "20 King St", name: "Chewie"}
我想最好的解决方案是像这样过滤一些东西,这会阻止后端和前端的额外工作。但是,我完全不知道是否有可能:
Object {name: "Bar", address: "33 Main St", name: "Luke"}
Object {name: "Parc", address: "20 King St", name: ["Han", "Chewie"]}
关于如何实现这一目标的任何建议或建议?谢谢!