⊗pyPmDOFR 126 of 129 menu

Adatkapcsolatok rokoni viszonyai Pythonban

Tegyük fel, hogy az a feladatunk, hogy apákat és fiúkat tároljunk. Tegyük fel, hogy minden apának csak egy fia lehet, a fiúnak pedig viszont szintén lehet egy fia.

Ki kell találnunk, hogyan fogjuk tárolni az adatokat. Az első ötlet, ami eszünkbe juthat - két táblát készíteni: parents az apáknak és sons a fiúknak. Majd összekapcsolni ezeket a táblákat valamilyen mezővel: son_id vagy parent_id.

Ez az ötlet azonban nem túl jó - hiszen ugyanaz a személy lehet egyszerre apa és fiú - és mindkét táblában tárolnunk kellene, ami kényelmetlen, több helyet foglal és könnyen hibákhoz vezet.

Egy jobb megoldás - összekapcsolni a táblát önmagával: készítsünk egy users táblát, ebben tároljuk az összes felhasználót és mindenkinek adjunk egy son_id mezőt, amiben a fiú id-ja lesz tárolva ugyanebből a táblából:

users
id name son_id
1 user1 2
2 user2 3
3 user3 null

Lekérdezések

Most írjunk egy lekérdezést, amely kihozza a felhasználót a fiával együtt.

Kezdetként egyszerűen hozzuk ki a felhasználókat:

SELECT * FROM users

Most csatoljunk (JOIN) hozzájuk a fiaikat. Önmagához fogjuk csatolni a táblát, ezért át kell neveznünk:

LEFT JOIN users as sons

Most megadhatjuk az alap tábla és az átnevezett tábla közötti kapcsolatot:

LEFT JOIN users as sons ON sons.id=users.son_id

Most adjuk meg a mezőket:

SELECT users.name as user_name, sons.name as son_name

Rakjuk össze az egészet, és a következő lekérdezést kapjuk:

SELECT users.name as user_name, sons.name as son_name FROM users LEFT JOIN users as sons ON sons.id=users.son_id

Gyakorlati feladatok

Tegyük fel, hogy vannak kategóriáink. Minden kategória tartozhat egy szülő kategóriához, az pedig viszont a saját szülő kategóriájához és így tovább. Írd le a tárolás szerkezetét.

Írj egy lekérdezést, amely kikéri a kategóriát a szülő kategóriájával együtt.

Írj egy lekérdezést, amely kikéri a kategóriát a szülőjével és a nagyszülőjével együtt.

Írj egy lekérdezést, amely kikéri a kategóriát a szülőjével, a nagyszülőjével és a dédszülőjével együtt.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás