У меня проблема с объединением таблиц, вот примеры таблиц:
Таблица A: (30 строк)
╔════╦════════════╦═════════════╗ ║ ID ║ Name ║ Description ║ ╠════╬════════════╬═════════════╣ ║ 1 ║ Type ║ Unicode Art ║ ║ 2 ║ Header ║ Spreadsheet ║ ║ 3 ║ Auto Align ║ Off ║ ╚════╩════════════╩═════════════╝
Таблица B: (100 строк)
╔════╦════════════╦═════════════╦═════════╗ ║ ID ║ Name ║ Description ║ TableA ║ ╠════╬════════════╬═════════════╬═════════╣ ║ 1 ║ Type ║ Unicode Art ║ 1 ║ ║ 2 ║ Header ║ Spreadsheet ║ 1 ║ ║ 3 ║ Auto Align ║ Off ║ 2 ║ ╚════╩════════════╩═════════════╩═════════╝
Таблица C: (8000 строк)
╔════╦════════════╦═════════════╦═════════╗ ║ ID ║ Article ║ Text ║ TableB ║ ╠════╬════════════╬═════════════╬═════════╣ ║ 1 ║ Type ║ Unicode Art ║ 1 ║ ║ 2 ║ Header ║ Spreadsheet ║ 1 ║ ║ 3 ║ Auto Align ║ Off ║ 2 ║ ╚════╩════════════╩═════════════╩═════════╝
Таблица D: (100 000 строк и подсчет)
╔════╦═══════════╦════════════╦═════════════╦═════════╗ ║ ID ║ Date ║ Clicks ║ Impressions ║ TableC ║ ╠════╬═══════════╬════════════╬═════════════╬═════════╣ ║ 1 ║ 20120814 ║ 10 ║ 3 ║ 1 ║ ║ 2 ║ 20120815 ║ 13 ║ 5 ║ 1 ║ ║ 3 ║ 20120816 ║ 15 ║ 10 ║ 2 ║ ╚════╩═══════════╩════════════╩═════════════╩═════════╝
Таблица E: (200 000 строк и подсчет)
╔════╦═══════════╦════════════╦═══════════╦═════════╗ ║ ID ║ Date ║ Views ║ Visitors ║ TableC ║ ╠════╬═══════════╬════════════╬═══════════╬═════════╣ ║ 1 ║ 20120814 ║ 10 ║ 3 ║ 1 ║ ║ 2 ║ 20120815 ║ 13 ║ 5 ║ 1 ║ ║ 3 ║ 20120816 ║ 15 ║ 10 ║ 2 ║ ║ 4 ║ 20120817 ║ 8 ║ 7 ║ 2 ║ ║ 5 ║ 20120818 ║ 9 ║ 4 ║ 2 ║ ╚════╩═══════════╩════════════╩═══════════╩═════════╝
Я запрашиваю эти таблицы с помощью одного оператора sql:
SELECT A.name, A.Description, SUM(D.clicks), SUM(D.Impressions), SUM(E.Views), SUM(E.Visitors) FROM A LEFT JOIN B ON A.ID=B.TableA LEFT JOIN C ON B.ID=C.TableB LEFT JOIN D ON C.ID=D.TableC LEFT JOIN E ON C.ID=E.TableC GROUP BY A.ID
Проблема заключается в том, что запрос возвращает недопустимый SUM для таблицы D и таблицы E
Однако, если в таблице запроса D и в таблице E в invidual queries я получаю правильные значения:
SELECT A.name, A.Description, SUM(D.clicks), SUM(D.Impressions) FROM A LEFT JOIN B ON A.ID=B.TableA LEFT JOIN C ON B.ID=C.TableB LEFT JOIN D ON C.ID=D.TableC GROUP BY A.ID
ИЗМЕНИТЬ 1:
Я пробовал ПРАВОЕ ПРИСОЕДИНЕНИЕ, ПРИСОЕДИНЯЮТСЯ, ЛЕВАЯ ВЗАИМОДЕЙСТВУЮЩАЯ ПРИСОЕДИНИТЬ, ни одна из них не работала,
Возможно, я использовал их в неправильных местах.
Но в первом заявлении, где я получил "все включено", значения умножаются
в тысячу раз выше, чем они есть на самом деле.