
Kapitel 4: Einf¨uhrung in MySQL: Ein MySQL-Tutorial 157
Nehmen wir an, Sie wollen herausfinden, wie alt jedes Haustier war, als es Nachwuchs
bekam. In der ereignis-Tabelle steht, wann das geschah, aber um das Alter der Mutter
auszurechnen, wird ihr Geburtstag ben¨otigt. Weil dieser in der pet-Tabelle steht, brauchen
Sie f¨ur diese Anfrage beide Tabellen:
mysql> SELECT pet.name, (TO_DAYS(datum) - TO_DAYS(geburtstag))/365 AS age,anmerkung
-> FROM pet, ereignis
-> WHERE pet.name = ereignis.name AND typ = "Nachwuchs";
+--------+------+------------------------------------+
| name | age | anmerkung |
+--------+------+------------------------------------+
| Fluffy | 2.27 | 4 k¨atzchen, 3 weiblich, 1 m¨annlich |
| Buffy | 4.12 | 5 h¨undchen, 2 weiblich, 3 m¨annlich |
| Buffy | 5.10 | 3 h¨undchen, 3 weiblich |
+--------+------+------------------------------------+
Zu dieser Anfrage gibt es einiges anzumerken:
• In der FROM-Klausel stehen zwei Tabellen, weil die Anfrage aus beiden Tabellen Infor-
mationen herausziehen muss.
• Wenn Sie Informationen aus mehreren Tabellen verbinden (englisch: join), m¨ussen
Sie angeben, wie Datens¨atze in der einen Tabelle mit solchen in der anderen Tabelle
in
¨
Ubereinstimmung gebracht werden k¨onnen. Das ist einfach, weil beide eine name-
Spalte haben. Die Anfrage benutzt die WHERE-Klausel, um Datens¨atze beider Tabellen
basierend auf den name-Werten in
¨
Ubereinstimmung zu bringen.
• Weil die name-Spalte in beiden Tabellen vorkommt, m¨ussen Sie angeben, welche Tabelle
Sie meinen, wenn Sie auf die Spalte verweisen. Das wird gemacht, indem dem Spal-
tennamen der Tabellenname voran gestellt wird.
Sie m¨ussen nicht unbedingt zwei verschiedene Tabellen haben, um eine Verkn¨upfung (Join)
durchzuf¨uhren. Manchmal ist es n¨utzlich, eine Tabelle mit sich selbst zu verkn¨upfen, wenn
Sie n¨amlich Datens¨atze in einer Tabelle mit Datens¨atze in derselben Tabelle vergleichen
wollen. Um zum Beispiel Zuchtpaare unter Ihren Haustieren zu finden, k¨onnen Sie die
pet-Tabelle mit sich selbst verkn¨upfen, um Paare von m¨annlichen und weiblichen Tieren
derselben Art zusammen zu bringen:
mysql> SELECT p1.name, p1.geschlecht, p2.name, p2.geschlecht, p1.art
-> FROM pet AS p1, pet AS p2
-> WHERE p1.art = p2.art AND p1.geschlecht = "w" AND p2.geschlecht = "m";
+--------+-------------+--------+-------------+---------+
| name | geschlecht | name | geschlecht | art |
+--------+-------------+--------+-------------+---------+
| Fluffy | w | Claws | m | Katze |
| Buffy | w | Fang | m | Hund |
| Buffy | w | Bowser | m | Hund |
+--------+-------------+--------+-------------+---------+
In dieser Anfrage legen wir Aliase f¨ur den Tabellennamen fest, um auf die Spalten ver-
weisen zu k¨onnen und um auseinander zu halten, auf welche Instanz der Tabelle sich jede
Spaltenreferenz bezieht.
Kommentare zu diesen Handbüchern