⊗pyPmDOFR 126 of 129 menu

Datenverwandtschaft in Python

Nehmen wir an, wir stehen vor der Aufgabe, Väter und Söhne zu speichern. Nehmen wir an, jeder Vater kann nur einen Sohn haben, und der Sohn seinerseits kann auch einen Sohn haben.

Wir müssen uns überlegen, wie wir die Daten speichern werden. Die erste Idee, die einem in den Sinn kommen könnte - zwei Tabellen zu erstellen: parents für Väter und sons für Söhne. Dann diese Tabellen mit einem Feld zu verbinden: son_id oder parent_id.

Allerdings ist diese Idee nicht sehr gut - denn dieselbe Person kann gleichzeitig sowohl Vater als auch Sohn sein - und müsste dann in beiden Tabellen gespeichert werden, was unpraktisch ist, mehr Platz beansprucht und leicht zu Fehlern führt.

Eine bessere Variante ist, die Tabelle mit sich selbst zu verbinden: Wir erstellen eine Tabelle users, darin speichern wir alle Benutzer und weisen jedem ein Feld son_id zu, in dem die id des Sohnes aus derselben Tabelle gespeichert wird:

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

Abfragen

Lassen Sie uns nun eine Abfrage schreiben, die den Benutzer zusammen mit seinem Sohn abruft.

Lassen Sie uns zunächst einfach die Benutzer abrufen:

SELECT * FROM users

Jetzt joinen wir ihre Söhne zu den Benutzern. Da wir die Tabelle mit sich selbst verbinden, müssen wir sie umbenennen:

LEFT JOIN users as sons

Nun können wir die Beziehung der Haupttabelle und der umbenannten Tabelle angeben:

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

Geben wir nun die Felder an:

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

Setzen wir alles zusammen und erhalten die folgende Abfrage:

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 Aufgaben

Nehmen wir an, wir haben Kategorien. Jede Kategorie kann zu einer übergeordneten Kategorie gehören, diese wiederum zu ihrer übergeordneten Kategorie und so weiter. Beschreiben Sie die Speicherstruktur.

Schreiben Sie eine Abfrage, die eine Kategorie zusammen mit ihrer übergeordneten Kategorie abruft.

Schreiben Sie eine Abfrage, die eine Kategorie zusammen mit ihrem Elternteil und Großelternteil abruft.

Schreiben Sie eine Abfrage, die eine Kategorie zusammen mit ihrem Elternteil, Großelternteil und Urgroßelternteil abruft.

Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικά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
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen