⊗pyPmDOFR 126 of 129 menu

Dataforbindelser i Python

Lad os antage, at vi står over for opgaven med at gemme fædre og sønner. Lad hver far kun have én søn, og sønnen til gengæld også kun have én søn.

Vi skal finde på, hvordan vi vil gemme dataene. Den første idé, der måske falder os ind, er at lave to tabeller: parents for fædre og sons for sønner. Derefter forbinde disse tabeller med et eller andet felt: son_id eller parent_id.

Dog er denne idé ikke særlig god - for samme person kan samtidigt være både far og søn - og vi bliver nødt til at gemme ham i begge tabeller, hvilket er upraktisk, optager mere plads og leder let til fejl.

En bedre mulighed er at forbinde tabellen med sig selv: lad os lave en tabel users, hvori vi gemmer alle brugere, og give hver et felt son_id, hvor der vil blive gemt id på sønnen fra den samme tabel:

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

Forespørgsler

Lad os nu skrive en forespørgsel, som henter brugeren sammen med hans søn.

Lad os starte med bare at hente brugerne:

SELECT * FROM users

Lad os nu join deres sønner til brugerne. Vi vil joine tabellen med sig selv, så vi er nødt til at udføre en omdøbning af den:

LEFT JOIN users as sons

Nu kan vi angive forbindelsen mellem hovedtabellen og den omdøbte tabel:

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

Lad os nu angive felterne:

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

Lad os samle alt og få følgende forespørgsel:

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

Praktiske opgaver

Antag, at vi har kategorier. Hver kategori kan tilhøre en overordnet kategori, som til gengæld kan tilhøre sin egen overordnede kategori og så videre. Beskriv lagringsstrukturen.

Skriv en forespørgsel, som henter kategorien sammen med dens overordnede kategori.

Skriv en forespørgsel, som henter kategorien sammen med dens forælder og bedsteforælder.

Skriv en forespørgsel, som henter kategorien sammen med dens forælder, bedsteforælder og oldemor/-fader.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis