LEFT JOIN mit MySQL

Ich wollte in einer MySQL Datenbank zwei Tabellen erstellen, welche voneinander abhängig sind. Danach wollte ich mir die Daten der beiden Tabellen ausgeben lassen. Weil ich meine ersten Datenbankerfahrungen mit Microsoft Access 2007 gemacht habe und ich dort alles mit Klicki Klicki anstatt mit SQL gelöst habe, stand ich jetzt bei der MySQL Datenbank und der Relation ein bisschen an. In Microsoft Access 2007 habe ich das ganz einfach mit Primarykey und Foreignkey gelöst. Da habe ich die Relationen einfach zusammengeklickt und schon hats funktioniert. Bei MySQL ist das ein bisschen anders, aber einfacher und besser nachvollziehbar wenn man es versteht.

Ein klassisches Beispiel
Wir möchten die MySQL Datenbank adressbuch erstellen, in welcher Personen und ihr Wohnort erfasst werden. Eine Person kann nur an einem Ort wohnen, aber an einem Ort können mehrere Personen wohnen. Es gibt also eine n:1 Beziehung. Am Schluss wollen wir alle Personen mit ihrem Wohnort ausgeben können.

Wir erstellen zwei Tabellen in der MySQL Datenbank adressbuch:

CREATE TABLE `adressbuch`.`personen` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`vorname` VARCHAR( 30 ) NOT NULL ,
`nachname` VARCHAR( 30 ) NOT NULL ,
`wohnort` INT NOT NULL
) ENGINE = InnoDB;

und

CREATE TABLE `adressbuch`.`wohnort` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`wohnort` VARCHAR( 30 ) NOT NULL
) ENGINE = InnoDB;

So sehen die Tabellen aus
personen

id vorname nachname wohnort
1 Hans Muster 1

wohnort

id wohnort
1 Baden

Das SQL Statement

SELECT personen.vorname, personen.nachname, wohnort.wohnort
FROM personen
LEFT JOIN wohnort ON personen.wohnort = wohnort.id;

gibt

vorname nachname wohnort
Hans Muster Baden

aus.

Wie funktionierts?

In der ersten Zeile wird angegeben, welche Spalten man haben möchte. In der zweiten Zeile wird die erste Tabelle angegeben. In der dritten Zeile werden alle anderen Tabellen angegeben, welche in der ersten Zeile vorkommen und nicht schon in der zweiten Zeile stehen. Einfach mal nach Deutsch übersetzt: Gib mir vorname, nachname und wohnort von den Tabellen personen und wohnort, wo wohnort der Tabelle person gleich id der Tabelle wohnort ist.

Nun können die Daten mit PHP weiterverarbeitet werden. Dies war nun eine n:1 Beziehung. Hier habe ich einen Beitrag gefunden, wie eine m:n Beziehung aufgelöst werden kann.

0 Antworten

Hinterlassen Sie einen Kommentar

Wollen Sie an der Diskussion teilnehmen?
Wir freuen uns über ihren Beitrag!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *