MySQL - Daten aus zwei DB-Tabellen auslesen
Tabelle: benutzer
userid vorname name geburtstag 1 Andrea Ross 2001-05-17 2 Steven Kelly 1992-09-09 3 Chloe Ince 1997-12-22 4 Oliver Alsop 2004-03-29
Tabelle: adressen
userid ort strasse nummer 1 Berlin Baumstraße 176 2 München Lindenalee 55 3 Hamburg Waterkant 8 4 Dresden Steintor 155
• Tabellen auslesen, absteigend nach dem Ort (`ort`) sortieren und eine Begrenzung (LIMIT) von 3 Zeilen.
SELECT `benutzer `.`vorname`, `benutzer `.`name`, `adressen `.`ort`, `adressen `.`strasse`, `adressen `.`nummer` FROM `benutzer ` INNER JOIN `adressen ` ON `benutzer `.`userid` = `adressen `.`userid` ORDER BY `adressen `.`ort` DESC LIMIT 3
vorname | name | ort | strasse | nummer |
---|---|---|---|---|
Steven | Kelly | München | Lindenalee | 55 |
Chloe | Ince | Hamburg | Waterkant | 8 |
Oliver | Alsop | Dresden | Steintor | 155 |
• Tabellen auslesen, Geburtstag (`geburtstag`) in deutsches Datumsformat umwandeln (`gdatum`).
SELECT `benutzer `.`vorname`, `benutzer `.`name`, DATE_FORMAT(`benutzer `.`geburtstag`, '%d.%m.%Y') AS `gdatum`, `adressen `.`ort`, `adressen `.`strasse`, `adressen `.`nummer` FROM `benutzer ` INNER JOIN `adressen ` ON `benutzer `.`userid` = `adressen `.`userid`
vorname | name | gdatum | ort | strasse | nummer |
---|---|---|---|---|---|
Andrea | Ross | 17.05.2001 | Berlin | Baumstraße | 176 |
Steven | Kelly | 09.09.1992 | München | Lindenalee | 55 |
Chloe | Ince | 22.12.1997 | Hamburg | Waterkant | 8 |
Oliver | Alsop | 29.03.2004 | Dresden | Steintor | 155 |
• Den Benutzer mit der `userid` 3 auslesen.
SELECT `benutzer `.`vorname`, `benutzer `.`name`, `adressen `.`ort`, `adressen `.`strasse`, `adressen `.`nummer` FROM `benutzer ` INNER JOIN `adressen ` ON `benutzer `.`userid` = `adressen `.`userid` WHERE `benutzer `.`userid` = '3'
vorname | name | ort | strasse | nummer |
---|---|---|---|---|
Chloe | Ince | Hamburg | Waterkant | 8 |
• Die Benutzer mit der `nummer` 55 auslesen.
SELECT `benutzer `.`vorname`, `benutzer `.`name`, `adressen `.`ort`, `adressen `.`strasse`, `adressen `.`nummer` FROM `benutzer ` INNER JOIN `adressen ` ON `benutzer `.`userid` = `adressen `.`userid` WHERE `adressen `.`nummer` LIKE '%55%'
vorname | name | ort | strasse | nummer |
---|---|---|---|---|
Steven | Kelly | München | Lindenalee | 55 |
Oliver | Alsop | Dresden | Steintor | 155 |
• Die Benutzer mit dem Vornamen 'Andrea' und 'Chloe' auslesen.
SELECT `benutzer `.`vorname`, `benutzer `.`name`, `adressen `.`ort`, `adressen `.`strasse`, `adressen `.`nummer` FROM `benutzer ` INNER JOIN `adressen ` ON `benutzer `.`userid` = `adressen `.`userid` WHERE `benutzer `.`vorname` IN ('Andrea', 'Chloe')
vorname | name | ort | strasse | nummer |
---|---|---|---|---|
Andrea | Ross | Berlin | Baumstraße | 176 |
Chloe | Ince | Hamburg | Waterkant | 8 |
• Die Benutzer auslesen die nach dem Jahr 2000 geboren wurden.
SELECT `benutzer `.`vorname`, `benutzer `.`name`, DATE_FORMAT(`benutzer `.`geburtstag`, '%d.%m.%Y') AS `gdatum`, `adressen `.`ort`, `adressen `.`strasse`, `adressen `.`nummer` FROM `benutzer ` INNER JOIN `adressen ` ON `benutzer `.`userid` = `adressen `.`userid` WHERE YEAR(`benutzer `.`geburtstag`) > 2000
vorname | name | gdatum | ort | strasse | nummer |
---|---|---|---|---|---|
Andrea | Ross | 17.05.2001 | Berlin | Baumstraße | 176 |
Oliver | Alsop | 29.03.2004 | Dresden | Steintor | 155 |
• Die Benutzer auslesen die zwischen den Jahren 1990 und 2000 geboren wurden.
SELECT `benutzer `.`vorname`, `benutzer `.`name`, DATE_FORMAT(`benutzer `.`geburtstag`, '%d.%m.%Y') AS `gdatum`, `adressen `.`ort`, `adressen `.`strasse`, `adressen `.`nummer` FROM `benutzer ` INNER JOIN `adressen ` ON `benutzer `.`userid` = `adressen `.`userid` WHERE YEAR(`benutzer `.`geburtstag`) BETWEEN 1990 AND 2000
vorname | name | gdatum | ort | strasse | nummer |
---|---|---|---|---|---|
Steven | Kelly | 09.09.1992 | München | Lindenalee | 55 |
Chloe | Ince | 22.12.1997 | Hamburg | Waterkant | 8 |
• Das Alter (`alter`) der Benutzer aus dem Geburtsdag (`geburtstag`) errechnen.
SELECT `benutzer `.`vorname`, `benutzer `.`name`, DATE_FORMAT(`benutzer `.`geburtstag`, '%d.%m.%Y') AS `gdatum`, TIMESTAMPDIFF(YEAR, `benutzer `.`geburtstag`, CURDATE()) AS `alter`, `adressen `.`ort` FROM `benutzer ` INNER JOIN `adressen ` ON `benutzer `.`userid` = `adressen `.`userid`
vorname | name | gdatum | alter | ort |
---|---|---|---|---|
Andrea | Ross | 17.05.2001 | 20 | Berlin |
Steven | Kelly | 09.09.1992 | 29 | München |
Chloe | Ince | 22.12.1997 | 23 | Hamburg |
Oliver | Alsop | 29.03.2004 | 17 | Dresden |
Alias für die Tabellennamen hinzufügen
Um die Abfrage der Tabellen übersichtlicher zu machen, vergeben wir Aliase.
Die Tabelle `benutzer` bekommt den Alias: t1 und die Tabelle `adressen` bekommt den Alias: t2
FROM `benutzer` t1 INNER JOIN `adressen` t2
SELECTt1 .`vorname`,t1 .`name`, DATE_FORMAT(t1 .`geburtstag`, '%d.%m.%Y') AS `gdatum`,t2 .`ort`,t2 .`strasse`,t2 .`nummer` FROM `benutzer`t1 INNER JOIN `adressen`t2 ONt1 .`userid` =t2 .`userid`
Backticks (Backquote) weglassen
Wenn man sich sicher ist, das die Namen der Spalten in der Tabelle keine reservierten Wörter (wie z. B.: `ALTER`) enthalten, dann können die Backticks (``, deutsch für: rückwärts geneigtes Hochkomma) weggelassen werden.
SELECTbenutzer .vorname,benutzer .name,adressen .ort,adressen .strasse,adressen .nummer FROMbenutzer INNER JOINadressen ONbenutzer .userid =adressen .userid ORDER BYadressen .ort DESC
Bausteine Alle Anzeigen
Eine zufällige Auswahl von Codeschnipseln
aus den Bereichen
HTML, CSS,
PHP, JavaScript und
MySQL.
<blockquote> Block-Zitat
CSS - Notizzettel mit Büroklammer