⊗pyPmDOFR 126 of 129 menu

Datas slektskapsrelasjoner i Python

La oss anta at vi står overfor oppgaven med å lagre fedre og sønner. La hver far ha bare én sønn, og sønnen i sin tur kan også ha én sønn.

Vi må finne ut hvordan vi skal lagre dataene. Den første ideen som kan komme til hjernen er å lage to tabeller: parents for fedre og sons for sønner. Deretter koble disse tabellene med et eller annet felt: son_id eller parent_id.

Imidlertid er ikke denne ideen veldig god - for samme person kan samtidig være både far og sønn - og vi må lagre ham i begge tabellene, noe som er upraktisk, tar opp mer plass og leder lett til feil.

Et bedre alternativ er å koble tabellen til seg selv: la oss lage en tabell users, der vi lagrer alle brukerne og gir hver et felt son_id, hvor id til sønnen fra samme tabell vil bli lagret:

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

Spørringer

La oss nå skrive en spørring som henter brukeren sammen med sønnen hans.

La oss først bare hente brukerne:

SELECT * FROM users

La oss nå joine med sønnene deres. Vi skal joine tabellen med seg selv, derfor må vi utføre omdøping av den:

LEFT JOIN users as sons

Nå kan vi spesifisere sammenhengen mellom hovedtabellen og den omdøpte tabellen:

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

La oss nå spesifisere feltene:

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

La oss sette alt sammen og få følgende spørring:

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 oppgaver

La oss si at vi har kategorier. Hver kategori kan tilhøre en overordnet kategori, og den kan i sin tur tilhøre sin overordnete kategori, og så videre. Beskriv lagringsstrukturen.

Skriv en spørring som henter kategorien sammen med dens overordnede kategori.

Skriv en spørring som henter kategorien sammen med dens overordnede kategori og besteforelderkategori.

Skriv en spørring som henter kategorien sammen med dens overordnede kategori, besteforelderkategori og oldeforelderkategori.

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