如何解决这个复杂的SQL查询
这些都是五个定表 http://i58.tinypic.com/53wcxe.jpg如何解决这个复杂的SQL查询
这是recomanded结果 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
如何加入这些3合一?
在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
非常感谢你回答它看起来很好,但仍然不工作,错误:Meldung 208,Ebene 16,Status 1,Zeile 1 Ungültiger对象名称'Aufrag'。 –
抱歉,我的意思是这个错误:Meldung 4104,Ebene 16,Status 1,Zeile 13 Der mehrteilige Bezeichner'Fahrten.F_Au_ID'konnte nicht gebunden werden。 –
应该是F.F_Au_ID,我更新了答案。 –
请帮助我如何写一个查询有相同的结果在图片(结果)! http://i58.tinypic.com/2vsrts7.jpg –