MySQL: select über mehrere Tabellen

dhh

Grünschnabel
Hallo zusammen,
hab ein kleines MySQL-Problem. Es soll eine Count-Abfrage über mehrere Tabellen gemacht werden, wobei ich als Variable (PHP) nur die Id der ersten Tabelle zur Verfügung habe. Folgendes habe ich probiert:

PHP:
SELECT
    count(f.id) AS anz_1,
    count(t.id) AS anz_2,
    count(p.id) AS anz_3
FROM
    tabelle1 AS f,
    tabelle2 AS t,
    tabelle3 AS p
WHERE
    f.id = 1
    AND t.f_id = f.id
    AND p.t_id = t.id

Was ist daran falsch? Wenn ich jede Count-Abfrage einzeln mache bekomme ich die korrekten Ergebnisse, nur so nicht... Würd's natürlich gern mit einem Select machen. MySQL-Version ist 5.0.32, sollte allerdings auch MySQL-4-kompatibel sein wenn möglich...

Schonmal danke für eure Antworten,
Gruß,
Daniel
 
Schau dir das Ergebnis der SQL Anfrage doch mal im MySQL Browser ohne Count an, dann solltest du deinen Fehler schnell sehen können.

Übrigens ist ein Verknüpfen von Tabellen über WHERE = nicht sonderlich schön.

Grund: Es wird das kartesisches Produkt deiner 3 Tabellen erstellt, also bei 3 Tabellen mit je 3 Zeilen ergeben sich 3x3x3 = 27 Zeilen. Erst danach werden die Zeilen über WHERE ausgewählt die in Betracht kommen.

Besser ist das ganze über ein JOIN umzusetzen.
 
hmm, ohne die Count's liefert mir das ganze ein leeres Resultat...
Wie sähe das denn mit JOIN aus?
 
Zuletzt bearbeitet:
Probier mal:
SQL:
SELECT *
FROM
    tabelle1 AS f LEFT JOIN (
          tabelle2 AS t LEFT JOIN tabelle3 AS p 
                ON t.id = p.t_id
   ) ON f.id = t.f_id
WHERE
    f.id = 1
 

Neue Beiträge

Zurück