Join mit drei Tabellen

kippi01

Mitglied
Hallo,

ich möchte Daten aus drei Tabellen (kunden, berichtskopf, arbeitsbericht) ausgeben. In den Tabellen kunden und berichtskopf gibt es das gemeinsame Feld "kundennr" und in den tabellen berichtskopf und arbeitsbericht das gemeinsame Feld "auftragsnr". In einer Session wird mir der Wert "auftragsnr" zur Verfügung gestellt.

Es sollen in einer Übersicht alle Daten aus den drei Tabellen dargestellt werden. Kann ich das über einen Join machen? Wenn ja, wie?

Danke für Eure Antwort ....

André
 
select [alle benötigten Feldnamen mit vorangestelltem zugehörigen Tabellennamen] from kunden
left join berichtskopf on berichtskopf.kundennr = kunden.kundennr
left join arbeitsgericht on arbeitsgericht.auftragsnr = berichtskopf.auftragsnr

<- so in etwa?
 
Joa, so würd ichs auch machen
PHP:
$sql = mysql_query( "SELECT
                          k.kundennr,
                          k.kundenname,
                          k.kundenadresse,
                          b.berichtsnr,
                          b.berichtstext,
                          a.arbeitsberichttext
                      FROM
                          tbl_kunden k
                      LEFT JOIN
                          tbl_berichtskopf b
                      ON
                          b.kundennr = k.kundennr
                      LEFT JOIN
                          tbl_arbeitsbericht a
                      ON
                          a.auftragsnr = b.auftragsnr
                      WHERE
                          k.kundennr = '" . $_GET[ 'id' ] . "'
                  " , $db_connect );

    while( $kunde = mysql_fetch_assoc( $sql ) )
    {
        echo '<b>' . $kunde[ 'kundenname' ] . '</b><br />';
        echo $kunde[ 'berichtstext' ];
        echo 'etc.......';
    }
 
Du solltest darauf verzichten, Eingabewerte (aus $_GET, $_POST) ungeprüft zu verwenden. Grade in SQL-Kommandos ist das ganz böse.

An sonsten klar. Ich hatte die id noch vergessen.

Dass das jetzt noch einer liest.. ;-)
 

Neue Beiträge

Zurück