PHPにおけるリレーションシップでの複数の子孫
前のレッスンでは、父は一人の息子しか持つことができませんでした。これは、父が son_id という関連付けを持っていたことで実現されていました。
では今度は、父が複数の息子を持つことができるとします。この場合、依然として一つのテーブルだけで自己結合できます。ただし、関連付けフィールドには息子の id ではなく、父の id を保存します。これにより、複数のユーザーが自分の父親を参照できるようになり、結果として父は複数の息子を持つことになります:
| id | name | father_id |
|---|---|---|
| 1 | user1 | 3 |
| 2 | user2 | 3 |
| 3 | user3 | 4 |
| 4 | user4 | null |
ユーザーをその父親と一緒に取得するには、次のようにします:
SELECT
users.name as user_name,
fathers.name as father_name
FROM
users
LEFT JOIN users as fathers ON fathers.id=users.father_id
ユーザーが存在するとします。各ユーザーには父親と母親がいます。データ保存の構造を説明してください。
ユーザーをその父親と母親と一緒に取得するクエリを記述してください。