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

SELECT
 t1.`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 
ON t1.`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.

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

Bausteine  Alle Anzeigen

Eine zufällige Auswahl von Codeschnipseln aus den Bereichen HTML, CSS, PHP, JavaScript und MySQL.

<sub> Physische Auszeichnung

CSS - Externe URL des Hyperlinks sichtbar machen

PHP - Zeichenkette nach Tabulator trennen

JavaScript - Leerzeichen am Anfang und Ende einer Zeichenkette entfernen

MySQL - MySQL-Anweisung mit PHP ausgeben