⊗pyPmDOFR 126 of 129 menu

Datarelaties in Python

Stel we hebben de taak om vaders en zonen op te slaan. Stel dat elke vader slechts één zoon kan hebben, en een zoon op zijn beurt ook slechts één zoon kan hebben.

We moeten bedenken hoe we de gegevens gaan opslaan. Het eerste idee dat in je op kan komen - maak twee tabellen: parents voor vaders en sons voor zonen. Vervolgens verbinden we deze tabellen met een veld: son_id of parent_id.

Dit idee is echter niet erg goed - want dezelfde persoon kan tegelijkertijd zowel vader als zoon zijn - en dan moeten we hem in beide tabellen opslaan, wat onhandig is, meer ruimte inneemt en gemakkelijk tot fouten leidt.

Een betere optie - verbind de tabel met zichzelf: we maken een tabel users, daarin slaan we alle gebruikers op en voor elk maken we een veld son_id, waarin de id van de zoon uit dezelfde tabel wordt opgeslagen:

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

Query's

Laten we nu een query schrijven die de gebruiker samen met zijn zoon ophaalt.

Laten we eerst gewoon de gebruikers ophalen:

SELECT * FROM users

Laten we nu hun zonen joinen. We joinen de tabel met zichzelf, dus we moeten deze hernoemen:

LEFT JOIN users as sons

Nu kunnen we de relatie tussen de hoofd- tabel en de hernoemde tabel specificeren:

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

Laten we nu de velden specificeren:

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

Laten we alles samenvoegen en we krijgen de volgende query:

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

Praktische opdrachten

Stel we hebben categorieën. Elke categorie kan behoren tot een bovenliggende categorie, die op haar beurt weer kan behoren tot haar bovenliggende categorie, en zo verder. Beschrijf de opslagstructuur.

Schrijf een query die de categorie samen met haar bovenliggende categorie ophaalt.

Schrijf een query die de categorie samen met haar bovenliggende categorie en de categorie daarboven ophaalt.

Schrijf een query die de categorie samen met haar bovenliggende categorie, de categorie daarboven en de categorie daarboven ophaalt.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren