Pythonにおける複数の子を持つ親子関係
前のレッスンでは、父親は
一人の息子しか持つことができませんでした。これは、
父親が 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
ユーザーがいるとします。各ユーザーは 父親と母親を持ちます。データ構造を設計してください。
ユーザーとその父親、母親を同時に取得する クエリを記述してください。