Python-da maglumatlaryň garyndaşlyk baglanyşyklary

Garaňyňyzdaky meseläniň göz öňünde tutuň: atalar we ogullary saklamaly. Her atanyň diňe bir oglu bolup biler, oglu bolsa öz nobatynda bir oglu bolup biler.

Maglumatlary nähili saklamalygyňyzy oýlap tapmaly. Kelläňize gelip biljek ilkinji pikir - iki sany tablisa döretmek: parents atalar üçin we sons ogullary üçin. Soňra bu tablisalary käbir meýdan bilen baglamak: son_id ýa-da parent_id.

Emma, bu pikiri gowy däl - şübhesiz, şol bir adam bir wagtda hem ata hem-de ogul bolup biler - we ony iki tablisada saklamaly bolýar, bu bolsa amatly däl, hasaba köp ýer tutýar we aňsatlyk bilen ýalňyşlyklara getirip biler.

Has gowy görnüş - tablisany özi bilen baglamak: biz users tablisasyny dözeris, onda ähli ulanyjylary saklaris we her birine son_id meýdanyny dözeris, onda şol bir tablisadaky ogluň id-i saklanar:

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

Soraglar

Indi ulanyjyny onuň oglu bilen bir hatarda alyp gelýän sorag ýazalyň.

Başlangyç üçin diňe ulanyjylary alyp gelýäli:

sqlSELECT
  *
FROM
  users

Indi ulanyjylary olaryň ogullary bilen jọin edeliň. Biz tablisany özi bilen jọin ederis, şonuň üçin ony täzeden atlandyrmaly bolarys:

sqlLEFT JOIN users as sons

Indi esasy tablisanyň we täzeden atlandyrylan tablisanyň arasyndaky baglanyşygy görkezip bileris:

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

Indi meýdanlary görkezeliň:

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

Hemmesini bir ýere jemläp, aşakdaky soragy alyarys:

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

Amaly meseleler

Задание 1

Garaňyňyzdaky meseläniň göz öňünde tutuň: kategoriýalar bar. Her kategoriýa ene kategoriýasyna degişli bolup biler, ene kategoriýasy öz nobatynda özüniň ene kategoriýasyna degişli we ş.m. Saklamanyň gurluşyny düşündiriň.

Задание 2

Kategoriýany onuň ene kategoriýasy bilen bir hatarda alyp gelýän sorag ýazyň.

Задание 3

Kategoriýany onuň enesi we baba enesi bilen bir hatarda alyp gelýän sorag ýazyň.

Задание 4

Kategoriýany onuň enesi, baba enesi we baba baba enesi bilen bir hatarda alyp gelýän sorag ýazyň.