如何解决这个复杂的 sql 查询

how to solve this complicated sql query

这些是给定的五个表格 http://i58.tinypic.com/53wcxe.jpg

这是推荐的结果 http://i58.tinypic.com/2vsrts7.jpg

请帮助我如何编写查询以获得此结果。 不知道怎么办!!!!

 SELECT K.*  , COUNT (A.Au_ID) AS AnzahlAuftr
 FROM Kunde K
 LEFT JOIN Auftrag A ON K.Kd_ID = A.Au_Kd_ID
 GROUP BY K.Kd_ID,K.Kd_Firma,K.Kd_Strasse,K.Kd_PLZ,K.Kd_Ort
 ORDER BY K.Kd_PLZ DESC;

 SELECT COUNT (F.F_ID) AS AnzahlFahrt
 FROM Fahrten F
 RIGHT JOIN Auftrag A ON A.Au_ID = F.F_Au_ID

SELECT SUM (T.Ts_Strecke) AS SumStrecke
FROM Teilstrecke T
LEFT JOIN Fahrten F ON F.F_ID = T.Ts_F_ID

如何将这三者合二为一?

没有必要在 Strasse 等地分组,而且可能会非常昂贵。这种方法怎么样:

SELECT K.*, ISNULL(Au.AnzahlAuftr,0) AS AnzahlAuftr, ISNULL(Au.AnzahlFahrt,0) AS AnzahlFahrt, ISNULL(Au.SumStrecke,0) AS SumStrecke
FROM Kunde K
LEFT OUTER JOIN

(SELECT A.Au_Kd_ID, COUNT(*) AS AnzahlAuftr, SUM(Fa.AnzahlFahrt1) AS AnzahlFahrt, SUM(Fa.SumStrecke2) AS SumStrecke
FROM Auftrag A LEFT OUTER JOIN
    (SELECT F.F_Au_ID, COUNT(*) AS AnzahlFahrt1, SUM(Ts.SumStrecke1) AS SumStrecke2
    FROM Fahrten F LEFT OUTER JOIN
        (SELECT T.Ts_F_ID, SUM(T.Ts_Strecke) AS SumStrecke1
        FROM Teilstrecke T
        GROUP BY T.Ts_F_ID) AS Ts
    ON Ts.Ts_F_ID = F.F_ID
    GROUP BY F.F_Au_ID) AS Fa
ON Fa.F_Au_ID = A.Au_ID
GROUP BY A.Au_Kd_ID) AS Au

ON Au.Au_Kd_ID = K.Kd_ID