4 MySQL-Tabellen verbinden
Pepper
- php
0 Olaf Schneider0 Rouven0 Axel Richter
Hallo,
habe vier MySQL Tabellen in der Form:
id|name|vorname
id|gebdatum|gebort
id|telefon|telefax|email|homepage|kennziffer
kennziffer|info
Wie kann bzw. mit welchem MySQl-Befehl kann ich diese so verbinden,
dass ich das Resultat:
id|name|vorname|gebdatum|gebort|telefon|telefax|email|homepage|info
lautet und ich somit das Resultat durchsuchen bzw. nach z.B. einem bestimmten Namen ausgeben lassen kann.
Die id's stimmen jeweils überein, die Kennziffern ebenfalls.
Hab mal irgendwo gelesen, dass das geht ... habs aber nicht so ganz verstanden. Wär nett, wenn mir jemand helfen kann.
mfg Pepper
Hallo,
meine Frage wäre viel eher, wofür man so viele Tabellen braucht! Normalerweise haben Erdlinge genau ein Geburtsdatum und -ort, also kann man aus den ersten beiden Tabellen schon mal eine machen. Je nachdem was kennziffer bedeutet und ob jede Person mehrere Sets von Telefon und Email hat, kann man noch weiter reduzieren. Damit kann man sich schon mal einen Teil des Aufwandes sparen.
Gruss Olaf Schneider
Hallo,
die Befehle die du suchst sind die JOINS. Hierbei gibt es verschiedene Arten, die wichtigsten 3:
INNER JOIN = Nur solche Datensätze werden herausgegeben, bei denen in beiden Tabellen die JOIN-Kriterien erfüllt wurden
LEFT JOIN = Es werden auf jeden Fall alle Datensätze der linken (der ersten) Tabelle übernommen, wenn in der rechten Tabelle das Kriterium erfüllt wird werden auch noch diese Daten übernommen, sonst werden die Spalten als NULL übergeben
RIGHT JOIN = invers zu LEFT JOIN
Die Syntax lautet also z.B.
SELECT namenstabelle.id, name, vorname, gebdatum, gebort, telefon, telefax, email, homepage
FROM
namenstabelle INNER JOIN geburstagstabelle ON namenstabelle.id = geburtstagtabelle.id
INNER JOIN telefontabelle ON namenstabelle.id = telefontabelle.id
INNER JOIN infotabelle ON infotabelle.id = namenstabelle.id
Hallo,
habe vier MySQL Tabellen in der Form:
id|name|vorname
id|gebdatum|gebort
id|telefon|telefax|email|homepage|kennziffer
kennziffer|info
Wie kann bzw. mit welchem MySQl-Befehl kann ich diese so verbinden,
dass ich das Resultat:id|name|vorname|gebdatum|gebort|telefon|telefax|email|homepage|info
lautet und ich somit das Resultat durchsuchen bzw. nach z.B. einem bestimmten Namen ausgeben lassen kann.
Die id's stimmen jeweils überein, die Kennziffern ebenfalls.
Mit SQL geht das über JOINS. Etwa so:
SELECT Tabelle1.id, Tabelle1.name, Tabelle1.vorname, Tabelle2.gebdatum, Tabelle2.gebort, Tabelle3.telefon, Tabelle3.telefax, Tabelle3.email, Tabelle3.homepage, Tabelle3.kennziffer, Tabelle4.info
FROM (Tabelle1 INNER JOIN (Tabelle3 INNER JOIN Tabelle4 ON Tabelle3.kennziffer = Tabelle4.kenziffer) ON Tabelle1.id = Tabelle3.id) INNER JOIN Tabelle2 ON Tabelle1.id = Tabelle2.id;
http://www.mysql.com/doc/en/JOIN.html
Gruß
Axel