Kai: sql Join drei tabellen

Hallo liebe Leuts im Forum,
ich habe ein Problem und zwar habe ich in einer my-sql Datenbank drei tabellen
1. Tabelle: Reservierungen mit den Feldern: id, f_reservierer, f_raum, f_fach, f_stunde, buchungsdatum
2. Tabelle: Faecher mit den Feldern: id, bezeichnung wobei dann id=f_fach
3. Tabelle: Raeume mit den Feldern: id, bezeichnung und id=f_raum

Jetzt möchte ich Folgende dinge nach der Bedingung f_reserveirer="$nutzer_id" ausgeben lassen und zwar die id,buchungsdatum und f_stunde aus Reservierungen, die bezeichnung aus Faecher und die bezeichnung aus Raeume...

Habe das mal so Probiert klappt aber mal überhaupt nicht:

$qry = "SELECT a.*,b.f_raum,c.f_fach FROM Reservierungen AS a, Faecher AS b, Raeume AS c WHERE a.f_reservierer='$nutzer_id' AND a.f_raum=b.bezeichnung AND a.f_fach_id=c.bezeichnung"
if (($res = mysql_query($qry)) && mysql_num_rows($res))
  {
   while ($row = mysql_fetch_object($res))
     { $id = $row->a.id;
    $buchungsdatum =$row->buchungsdatum;
    $stunde = $row->f_stunde;
    $raum = $row->f_raum;
    $fach = $row->f_fach;
    echo "ID: $id <br />";
    echo "Datum: $buchungsdatum <br />";
    echo "Raum: $raum <br />";
    echo "Fach: $fach <br />";
    echo "Stunde: $stunde <br />";
   }
  }
das ist aber bestimmt total falsch und ich bräuchte mal ein par Hilfestellungen. Schonmal danke, Kai.

  1. Hiho

    Habe das mal so Probiert klappt aber mal überhaupt nicht:

    etwas mehr Details könnten es ruhig sein.

    Deine Joins sind anscheinend per Zufallsgenerator gesetzt:

    a.f_raum=b.bezeichnung

    f_raum ist laut deiner Beschreibung die id und nicht die Bezeichnung.

    AND a.f_fach_id=c.bezeichnung"

    hier dasselbe, da werden Äpfel mit Birnen verglichen.

    {
       while ($row = mysql_fetch_object($res))
         { $id = $row->a.id;
        $buchungsdatum =$row->buchungsdatum;
        $stunde = $row->f_stunde;
        $raum = $row->f_raum;
        $fach = $row->f_fach;
        echo "ID: $id <br />";
        echo "Datum: $buchungsdatum <br />";
        echo "Raum: $raum <br />";
        echo "Fach: $fach <br />";
        echo "Stunde: $stunde <br />";
       }
      }

    1. Sieh erstmal zu, dass dein SQL stimmt, prüfe das mit einem SQL-Tool deiner Wahl. Vorher ist dein PHP-Code reichlich irrelevant.
    2. Joins werden über einen Vergleich der korrespondierenden Felder hergestellt. Welche zusammengehören, hast du ja schon hingeschrieben.
    3. Sobald das SQL stimmt, setze es in PHP um.

    ich hoffe, da waren 1-2 brauchbare Tipps dabei...
    Gruß
    Wurf

    1. Ja, danke ich hatte da wohl einiges durcheinander, habe den SQl query jetzt erstmal direkt in der Datenbank "getestet" und dann war die Ausgabe auch kein Problem mehr.