Трябва да изравните както D, така и E таблицата. Тогава предполагам, че A и B са просто търсения за C, така че няма нужда да правите GROUP BY на A:http://www.sqlfiddle.com/#!2/fccf1/8
Премахнах шума (A и B), тъй като не мога да видя (все още) как A и B са свързани с обобщаването на информацията за C
Опитайте това:
ИЗБЕРЕТЕ C.Article, C.Text, COALESCE(D.ClicksSum,0) КАТО ClicksSum, COALESCE(D.ImpressionsSum,0) КАТО ImpressionsSum, COALESCE(E.ViewsSum,0) КАТО ViewsSum, COALESCE( E.VisitorsSum,0) AS VisitorsSumFROM 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 (Прегледи) КАТО ViewsSum, SUM(Посетители) КАТО VisitorsSum ОТ E ГРУПА ПО TableC ) E ON C.ID=E.TableC
Изход:
<предварителен код>| СТАТИЯ | ТЕКСТ | CLICKSSUM | IMPRESSIONSSUM | VIEWSSUM | СУМ НА ПОСЕТИТЕЛИТЕ |------------------------------------------------ ----------------------------------| Тип | Unicode Art | 23 | 8 | 23 | 8 || Заглавие | Електронна таблица | 15 | 10 | 32 | 21 || Автоматично подравняване | Изключено | 0 | 0 | 0 | 0 |Имайте предвид, че не написах тези схеми в моята sqlfiddle публикация ръчно, използвам Текст към DDL на sqlfiddle
Обичам http://sqlfiddle.com , неговият Текст към DDL може дори да анализира данните от вашето ASCII изображение ツ
След като видите по-ясната си цел (от коментара си), това може да е това:http:/ /www.sqlfiddle.com/#!2/fccf1/13
ИЗБЕРЕТЕ A.Name, A.Description, COALESCE(SUM(D.ClicksSum),0) КАТО ClicksSum, COALESCE(SUM(D.ImpressionsSum),0) КАТО ImpressionsSum, COALESCE(SUM(E.ViewsSum) ),0) КАТО ViewsSum, COALESCE(SUM(E.VisitorsSum),0) AS VisitorsSumFROM 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 ОТ E GROUP BY TableC ) E ON C.ID=E.TableC DIGHT JOIN B ON B.ID =C.TableB DIGHT JOIN A ON A.ID =B.TableAGROUP BY A.ID
Изход:
<предварителен код>| ИМЕ | ОПИСАНИЕ | CLICKSSUM | IMPRESSIONSSUM | VIEWSSUM | СУМ НА ПОСЕТИТЕЛИТЕ |------------------------------------------------ ----------------------------------| Тип | Unicode Art | 38 | 18 | 55 | 29 || Заглавие | Електронна таблица | 0 | 0 | 0 | 0 || Автоматично подравняване | Изключено | 0 | 0 | 0 | 0 |Горният подход все още може да произвежда декартови продукти, изравняване на подкатегория (B), преди да я групира в категория (A):http://www.sqlfiddle.com/#!2/fccf1/19
ИЗБЕРЕТЕ A.Name, A.Description, COALESCE(SUM(B.ClicksSum),0) КАТО ClicksSum, COALESCE(SUM(B.ImpressionsSum),0) КАТО ImpressionsSum, COALESCE(SUM(B.ViewsSum) ),0) КАТО ViewsSum, COALESCE(SUM(B.VisitorsSum),0) КАТО VisitorsSumFROM ALEFT JOIN( SELECT B.ID, B.TableA, SUM(C.ClicksSum) КАТО ClicksSum, SUM(C.ImpressionsSum) КАТО ImpressionsSum, SUM(C.ViewsSum) КАТО ViewsSum, SUM(C.VisitorsSum) КАТО VisitorsSum ОТ B LEFT JOIN ( SELECT C.TableB, D.ClicksSum, D.ImpressionsSum, E.ViewsSum, E.VisitorsSum ОТ 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(Посетители) AS VisitorsSum ОТ 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.IDGROUP BY A.ID
Изход:
<предварителен код>| ИМЕ | ОПИСАНИЕ | CLICKSSUM | IMPRESSIONSSUM | VIEWSSUM | СУМ НА ПОСЕТИТЕЛИТЕ |------------------------------------------------ ----------------------------------| Тип | Unicode Art | 38 | 18 | 55 | 29 || Заглавие | Електронна таблица | 0 | 0 | 0 | 0 || Автоматично подравняване | Изключено | 0 | 0 | 0 | 0 |