⊗ppPmDOFR 385 of 447 menu

PHPда маълумотларнинг қардош алоқалари

Фарз қилайлик, бизда оталар ва ўғилларни сақлаш вазифаси турибди. Фарз қилайлик, ҳар бир ота фақат битта ўғилга эга бўлиши мумкин, ўғил эса ўз навбатида битта ўғилга эга бўлиши мумкин.

Маълумотларни қандай сақлашимизни ўйлаб топишимиз керак. Биринчи бўлиб мимга келадиган фикр - иккита жадвал яратиш: 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). Жойлаштириш учун биз жадвални ўзини ўзига жойлаштирамиз, шунинг учун биз унгинг номини ўзгартиришимиз керак:

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çeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш