Pepper: 4 MySQL-Tabellen verbinden

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

  1. 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

  2. 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

  3. 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