Relations parentales avec plusieurs descendants en Python
Dans la leçon précédente, un père ne pouvait avoir qu'un
seul fils. Ceci était réalisé grâce au fait
que le père avait une liaison son_id.
Supposons maintenant qu'un père puisse avoir plusieurs
fils. Dans ce cas, nous pouvons toujours
ne créer qu'une seule table, qui sera
liée à elle-même. Seulement, dans le champ de liaison,
nous stockerons non pas le id du fils, mais le id
du père. Ainsi, plusieurs utilisateurs pourront
se référer à leur père - et de cette manière,
le père aura plusieurs fils :
| id | name | father_id |
|---|---|---|
| 1 | user1 | 3 |
| 2 | user2 | 3 |
| 3 | user3 | 4 |
| 4 | user4 | null |
Obtenir un utilisateur ainsi que son père est possible de la manière suivante :
SELECT
users.name as user_name,
fathers.name as father_name
FROM
users
LEFT JOIN users as fathers ON fathers.id=users.father_id
Supposons que nous ayons des utilisateurs. Chaque utilisateur a un père et une mère. Décrivez la structure de stockage.
Écrivez une requête qui récupérera un utilisateur ainsi que son père et sa mère.