Uhusiano wa Data katika PHP

Wacha tuseme tunakabiliwa na chango la kuhifadhi baba na wanawe. Wacha kila baba awe na mtoto mmoja tu, na huyo mtoto kwa upande wake anaweza pia kuwa na mtoto mmoja.

Inahitajika kutafakari jinsi tutakavyohifadhi data. Wazo la kwanza, linaweza kujia akilini - kutengeneza jedwali mbili: parents kwa ajili ya baba na sons kwa ajili ya wana. Kisha kuunganisha jedwali hizi na sehemu fulani: son_id au parent_id.

Hata hivyo, hili si wazo zuri sana - kwa sababu mtu yule yule anaweza kuwa wakati huo huo baba na mtoto - na itabidi kumhifadhi katika jedwali zote mbili, na hii haifai, inachukua nafasi zaidi na kwa urahisi husababisha makosa.

Chaguo bora zaidi - ni kuunganisha jedwali lenyewe lenyewe: tutatengeneza jedwali users, ndani yake tutahifadhi watumiaji wote na kwa kila mmoja tutatengeneza sehemu son_id, ambayo itahifadhi id ya mtoto kutoka kwenye jedwali hili hili:

users
id name son_id
1 user1 2
2 user2 3
3 user3 null

Maswali

Sasa tujiandae kuandika swali, litakalotoa mtumiaji pamoja na mtoto wake.

Kwa kuanza wacha tuwatoe watumiaji:

sqlSELECT
  *
FROM
  users

Sasa tuwaunge watoto wao kwa watumiaji. Kuunga tutafanya jedwali lenyewe kwa lenyewe, kwa hivyo inahitajika kutekeleza ubadilishaji jina lake:

sqlLEFT JOIN users as sons

Sasa tunaweza kubainisha uhusiano wa jedwali kuu na ile iliyobadilishwa jina:

sqlLEFT JOIN users as sons ON sons.id=users.son_id

Sasa tubainishe sehemu:

sqlSELECT
  users.name as user_name, sons.name as son_name

Tukusanye pamoja yote na tutapata swali lifuatalo:

sqlSELECT
  users.name as user_name, sons.name as son_name
FROM
  users
LEFT JOIN users as sons ON sons.id=users.son_id

Kazi za Vitendo

Задание 1

Wacha tuseme tuna kategoria. Kila kategoria inakuweza mzazi wake, na yeye kwa upande wake ana mzazi wake na kadhalika. Eleza muundo wa uhifadhi.

Задание 2

Andika swali, litakalotoa kategoria pamoja na kategoria yake ya mzazi.

Задание 3

Andika swali, litakalotoa kategoria pamoja na mzazi wake na babu.

Задание 4

Andika swali, litakalotoa kategoria pamoja na mzazi wake, babu na babu wa babu.