⊗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

Сега ќе им се придружиме на корисниците нивните синови. Ќе ја придружиме табелата самата на себе, затоа треба да извршиме нејзино преименување:

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šuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј