⊗ppPmDOFR 385 of 447 menu

Datarelaterte forbindelser i PHP

La oss anta at vi står overfor oppgaven med å lagre fedre og sønner. La hver far ha kun é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 da må vi lagre ham i begge tabellene, noe som er upraktisk, tar opp mer plass og fører lett til feil.

Et bedre alternativ er å koble tabellen til seg selv: la oss lage en tabell users, i den vil vi lagre alle brukere og gi hver en 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 sin sønn.

La oss først bare hente brukerne:

SELECT * FROM users

La oss nå joine til brukerne deres sønner. Vi vil joine tabellen til seg selv, så vi må utføre dens omdøping:

LEFT JOIN users as sons

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

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

Anta at vi har kategorier. Hver kategori kan tilhøre en overordnet kategori, og den kan i sin tur tilhøre sin egen overordnede kategori, og så videre. Beskriv lagringsstrukturen.

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

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

Skriv en spørring som henter en kategori 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