Hallo,
Ich dachte ich join das ganze und kann dann mit ORDER BY die Darstellung beeinflussen. Wenn das nicht geht, gibt es aber vermutlich eine andere Lösung...
Ein JOIN über drei Tabellen ist hier aber nicht das Gewünschte. Statt einer Erklärung ein Beispiel:
Tabelle: Stammdaten
ID Name
1 a
2 b
3 c
4 d
Tabelle: Anfragen
StdID Anfrage
1 a1_1
1 a1_2
2 a2_1
2 a2_2
3 a3_1
Tabelle: Angebote
StdID Angebot
1 agb1_1
1 agb1_2
2 agb2_1
3 agb3_1
Ein
SELECT Stammdaten.ID, Stammdaten.Name, Anfragen.Anfrage, Angebote.Angebot
FROM (Stammdaten
LEFT JOIN Anfragen ON Stammdaten.ID = Anfragen.StdID)
LEFT JOIN Angebote ON Stammdaten.ID = Angebote.StdID;
ergibt:
ID Name Anfrage Angebot
1 a a1_1 agb1_1
1 a a1_1 agb1_2
1 a a1_2 agb1_1
1 a a1_2 agb1_2
2 b a2_1 agb2_1
2 b a2_2 agb2_1
3 c a3_1 agb3_1
4 d
also alle Stammdaten, wenn möglich verbunden mit den entsprechenden Anfragen und nochmal, wenn möglich, verbunden mit den entsprechenden Angeboten.
Du willst eher
SELECT Stammdaten.ID, Stammdaten.Name, (select count(*) from Anfragen where ID=StdID) AS Anfragen, (select count(*) from Angebote where ID=StdID) AS Angebote
FROM Stammdaten;
ergibt:
ID Name Anfragen Angebote
1 a 2 2
2 b 2 1
3 c 1 1
4 d 0 0
Wenn also Unterabfragen unterstützt werden, dann so, sonst mit zwei getrennten JOIN-SELECTs.
viele Grüße
Axel