⊗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) օգտատերերին նրանց որդիներին: Մենք աղյուսակը կմիացնենք ինքն իրեն, ուստի անհրաժեշտ է կատարել դրա վերանվանումը:

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हिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել