⊗pyPmDOFR 126 of 129 menu

Verwantskap van data in Python

Laat ons sê ons het die taak om vaders en seuns te stoor. Laat elke vader net een seun kan hê, en die seun kan op sy beurt ook net een seun hê.

Ons moet uitvind hoe ons die data gaan stoor. Die eerste idee wat in jou op kan kom, is om twee tabelle te maak: parents vir vaders en sons vir seuns. Dan verbind ons hierdie tabelle met een of ander veld: son_id of parent_id.

Hierdie idee is egter nie baie goed nie - want dieselfde persoon kan gelyktydig 'n vader en 'n seun wees - en ons sal hom moet stoor in albei tabelle, en dit is ongerieflik, neem meer plek in en lei maklik tot foute.

'n Beter opsie is om die tabel met homself te verbind: laat ons 'n tabel users skep, ons sal alle gebruikers daarin stoor en vir elkeen 'n veld son_id maak, waarin die id van die seun uit dieselfde tabel gestoor sal word:

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

Navrae

Laat ons nou 'n navraag skryf wat die gebruiker saam met sy seun sal kry.

Om mee te begin, laat ons net die gebruikers kry:

SELECT * FROM users

Laat ons nou hul seuns by die gebruikers aansluit. Ons sal die tabel by homself aansluit, dus moet ons dit hernoem:

LEFT JOIN users as sons

Nou kan ons die skakel tussen die hoof- tabel en die hernoemde een spesifiseer:

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

Laat ons nou die velde spesifiseer:

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

Laat ons alles bymekaar sit en die volgende navraag kry:

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

Praktiese take

Gestel ons het kategorieë. Elke kategorie kan aan 'n ouerkategorie behoort, wat op sy beurt aan sy ouer behoort en so meer. Beskryf die stoorstruktuur.

Skryf 'n navraag wat die kategorie same met sy ouerkategorie sal kry.

Skryf 'n navraag wat die kategorie same met sy ouer en grootouer sal kry.

Skryf 'n navraag wat die kategorie same met sy ouer, grootouer en oorgrootouer sal kry.

Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp