⊗pyPmDOFR 126 of 129 menu

Дар Python пайвандҳои хешовандии додаҳо

Фарз мекунем, ки пешмоҳи мо нигоҳ доштани падарон ва писарҳо аст. Бигзор ҳар падар танҳо як писар дошта бошад, ва писар худ низ метавонад як писар дошта бошад.

Ба мо лозим аст, ки чӣ гуна додаҳоро нигоҳ дорем. Аввалин идея, ки ба сар мерасад - ду ҷадвал сохтан: parents барои падарон ва sons барои писарҳо. Сипас ин ҷадвалҳоро бо майдони мисли: son_id ё parent_id пайваст кардан.

Аммо, ин идея хеле хуб нест - зеро ҳамон як шахс метавонад ҳамзамон падар ва писар бошад - ва бояд онро дар ҳарду ҷадвал нигоҳ дошт, ва ин ғайриқулай аст, ҷойи бештарро ишғол мекунад ва осон ба хатоҳо меорад.

Гузинаи беҳтар - пайваст кардани ҷадвал худ ба худ аст: ҷадвали users-ро месозем, дар он ҳамаи корбаронро нигоҳ медорем ва ба ҳар кадом майдони son_id месозем, ки дар он id-и писари ин ҳамон ҷадвал нигоҳ дошта мешавад:

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

Дархостҳо

Ҳоло биёед дархостеро нависем, ки корбарро бо писари он гирад.

Аввал биёед танҳо корбаронро гирем:

SELECT * FROM users

Ҳоло ба корбарон писарҳои онҳоро ҳамроҳ (join) мекунем. Ба ҷадвал худ ба худ ҳамроҳи (join) мекунем, аз ин рӯ ба мо лозим аст, ки номашро дигар кунем:

LEFT JOIN users as sons

Ҳоло мо метавонем пайванди ҷадвали асосӣ ва ҷадвали ногӯзорошшударо ишора кунем:

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

Акнун майдонҳоро ишора мекунем:

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

Ҳамаро якҷоя мекунем ва дархости зеринро мегирем:

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

Масъалаҳои амалӣ

Фарз мекунем, ки мо гурӯҳҳо (категорияҳо) дорем. Ҳар гурӯҳ метавонад ба гурӯҳи волидайн тааллуқ дошта бошад, он худ ба гурӯҳи волидайни худ ва ҳамин тавр. Сохти нигоҳдориро тавсиф кунед.

Дархостеро нависед, ки гурӯҳро бо гурӯҳи волидайни он мегирад.

Дархостеро нависед, ки гурӯҳро бо волидайн ва бобои он мегирад.

Дархостеро нависед, ки гурӯҳро бо волидайн, бобо ва бобобобои он мегирад.

Тоҷикӣ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мо барои коркарди сомона, таҳлил ва шахсӣ кардан аз cookie истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан