Wielu potomków w relacjach rodzinnych w PHP
W poprzedniej lekcji ojciec mógł mieć tylko
jednego syna. Osiągnięto to dzięki temu,
że ojciec miał powiązanie son_id.
Załóżmy teraz, że ojciec może mieć wielu synów.
W tym przypadku nadal możemy utworzyć
tylko jedną tabelę, która będzie powiązana
sama ze sobą. Tylko w polu powiązania będziemy przechowywać
nie id syna, a id ojca. W tym
przypadku wielu użytkowników będzie mogło odwołać się
do swojego ojca - i w ten sposób ojciec będzie miał
wielu synów:
| id | name | father_id |
|---|---|---|
| 1 | user1 | 3 |
| 2 | user2 | 3 |
| 3 | user3 | 4 |
| 4 | user4 | null |
Uzyskanie użytkownika wraz z jego ojcem można wykonać w następujący sposób:
SELECT
users.name as user_name,
fathers.name as father_name
FROM
users
LEFT JOIN users as fathers ON fathers.id=users.father_id
Załóżmy, że mamy użytkowników. Każdy użytkownik ma ojca i matkę. Opisz strukturę przechowywania.
Napisz zapytanie, które pobierze użytkownika razem z jego ojcem i matką.