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