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
Фарз қилайлик, бизда фойдаланувчилар мавжуд. Ҳар бир фойдаланувчи ота ва онага эга. Сақлаш тузилимини ёзиб чиқинг.
Фойдаланувчини унинг отаси ва онаси билан бирга олувчи сўровни ёзинг.