私はそのような2つのテーブルを持っています:
-----------------------------------------------------
| 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 |
-----------------------------------------------------
すべての場所を関連する人々と一緒に表示したいと思います。そうするためには、(各人のエントリに同じ場所を設定するのではなく)人のリストを含む場所ごとに1つのレコードを作成するのがよいと思います。
私はSQLクエリにあまり詳しくないので、RightJoinとGroupByを使用してみましたが、良い結果は得られませんでした。
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"]}
これをどのように達成できるかについてのアドバイスや提案はありますか?ありがとう!