⊗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

Այժմ միացնենք օգտատերերին նրանց որդիներին: Միացումը մենք կկատարենք աղյուսակն ինքն իրեն, այդ պատճառով մեզ անհրաժեշտ է կատարել դրա վերանվանում:

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-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել