Kelios įpėdinio ryšio šaknys PHP
Ankstesnėje pamokoje tėvas galėjo turėti tik
vieną sūnų. Tai buvo pasiekta dėl to,
kad tėvas turėjo ryšį son_id.
Tarkime, kad dabar tėvas gali turėti kelis sūnus.
Šiuo atveju mes vis dar galime sukurti
tik vieną lentelę, kuri bus susieta
pati su savimi. Tik ryšio lauke saugosime
ne id sūnaus, o id tėvo. Šiuo
atveju keli vartotojai galės nurodyti
savo tėvą - ir taip tėvas turės
kelis sūnus:
| id | name | father_id |
|---|---|---|
| 1 | user1 | 3 |
| 2 | user2 | 3 |
| 3 | user3 | 4 |
| 4 | user4 | null |
Gauti vartotoją kartu su jo tėvu galima tokiu būdu:
SELECT
users.name as user_name,
fathers.name as father_name
FROM
users
LEFT JOIN users as fathers ON fathers.id=users.father_id
Tarkime, kad mes turime vartotojus. Kiekvienas vartotojas turi tėvą ir motiną. Aprašykite saugojimo struktūrą.
Parašykite užklausą, kuri gautų vartotoją kartu su jo tėvu ir motina.