Du måste platta till både D- och E-tabellen. Sedan antar jag att A och B bara är uppslagningar för C, så det finns ingen anledning att göra GROUP BY på A:http://www.sqlfiddle.com/#!2/fccf1/8
Jag tog bort bruset (A och B), eftersom jag (ännu) inte kan se hur A och B är relaterade till att sammanfatta informationen för C
Prova detta:
SELECT
C.Article,
C.Text,
COALESCE(D.ClicksSum,0) AS ClicksSum,
COALESCE(D.ImpressionsSum,0) AS ImpressionsSum,
COALESCE(E.ViewsSum,0) AS ViewsSum,
COALESCE(E.VisitorsSum,0) AS VisitorsSum
FROM
C
LEFT JOIN
(
SELECT TableC, SUM(Clicks) AS ClicksSum, SUM(Impressions) AS ImpressionsSum
FROM D
GROUP BY TableC
) D ON C.ID=D.TableC
LEFT JOIN
(
SELECT TableC, SUM(Views) AS ViewsSum, SUM(Visitors) AS VisitorsSum
FROM E
GROUP BY TableC
) E ON C.ID=E.TableC
Utdata:
| ARTICLE | TEXT | CLICKSSUM | IMPRESSIONSSUM | VIEWSSUM | VISITORSSUM |
----------------------------------------------------------------------------------
| Type | Unicode Art | 23 | 8 | 23 | 8 |
| Header | Spreadsheet | 15 | 10 | 32 | 21 |
| Auto Align | Off | 0 | 0 | 0 | 0 |
Observera att jag inte skrev in dessa scheman i mitt sqlfiddle-inlägg manuellt, jag använder sqlfiddles Text till DDL
Jag älskar http://sqlfiddle.com , dess Text till DDL kan till och med analysera data från din ASCII-bild ツ
När du ser ditt tydligare mål (från din kommentar) kan detta vara det:http:/ /www.sqlfiddle.com/#!2/fccf1/13
SELECT
A.Name, A.Description,
COALESCE(SUM(D.ClicksSum),0) AS ClicksSum,
COALESCE(SUM(D.ImpressionsSum),0) AS ImpressionsSum,
COALESCE(SUM(E.ViewsSum),0) AS ViewsSum,
COALESCE(SUM(E.VisitorsSum),0) AS VisitorsSum
FROM
C
LEFT JOIN
(
SELECT TableC, SUM(Clicks) AS ClicksSum, SUM(Impressions) AS ImpressionsSum
FROM D
GROUP BY TableC
) D ON C.ID=D.TableC
LEFT JOIN
(
SELECT TableC, SUM(Views) AS ViewsSum, SUM(Visitors) AS VisitorsSum
FROM E
GROUP BY TableC
) E ON C.ID=E.TableC
RIGHT JOIN B ON B.ID = C.TableB
RIGHT JOIN A ON A.ID = B.TableA
GROUP BY A.ID
Utdata:
| NAME | DESCRIPTION | CLICKSSUM | IMPRESSIONSSUM | VIEWSSUM | VISITORSSUM |
----------------------------------------------------------------------------------
| Type | Unicode Art | 38 | 18 | 55 | 29 |
| Header | Spreadsheet | 0 | 0 | 0 | 0 |
| Auto Align | Off | 0 | 0 | 0 | 0 |
Ovanstående tillvägagångssätt kan fortfarande producera kartesiska produkter, platta ut underkategorin(B) innan du grupperar den i kategori(A):http://www.sqlfiddle.com/#!2/fccf1/19
SELECT
A.Name, A.Description,
COALESCE(SUM(B.ClicksSum),0) AS ClicksSum,
COALESCE(SUM(B.ImpressionsSum),0) AS ImpressionsSum,
COALESCE(SUM(B.ViewsSum),0) AS ViewsSum,
COALESCE(SUM(B.VisitorsSum),0) AS VisitorsSum
FROM A
LEFT JOIN
(
SELECT
B.ID, B.TableA,
SUM(C.ClicksSum) AS ClicksSum,
SUM(C.ImpressionsSum) AS ImpressionsSum,
SUM(C.ViewsSum) AS ViewsSum,
SUM(C.VisitorsSum) AS VisitorsSum
FROM B
LEFT JOIN
(
SELECT
C.TableB,
D.ClicksSum,
D.ImpressionsSum,
E.ViewsSum,
E.VisitorsSum
FROM
C
LEFT JOIN
(
SELECT TableC, SUM(Clicks) AS ClicksSum, SUM(Impressions) AS ImpressionsSum
FROM D
GROUP BY TableC
) D ON C.ID=D.TableC
LEFT JOIN
(
SELECT TableC, SUM(Views) AS ViewsSum, SUM(Visitors) AS VisitorsSum
FROM E
GROUP BY TableC
) E ON C.ID=E.TableC
) C ON C.TableB = B.ID
GROUP BY B.ID
) B ON B.TableA = A.ID
GROUP BY A.ID
Utdata:
| NAME | DESCRIPTION | CLICKSSUM | IMPRESSIONSSUM | VIEWSSUM | VISITORSSUM |
----------------------------------------------------------------------------------
| Type | Unicode Art | 38 | 18 | 55 | 29 |
| Header | Spreadsheet | 0 | 0 | 0 | 0 |
| Auto Align | Off | 0 | 0 | 0 | 0 |