2016-05-24 3 views
1

У меня есть таблицы 2015 и 2016, которые имеют одинаковые столбцы. Я пытаюсь отобразить итоговые данные из отдельных лет одного столбца.Суммирование двух столбцов в одном запросе из разных таблиц

SELECT t16.`Dep Name`, sum(t16.`number_courses`) AS `Total 16`, sum(t15.`number_courses`) 
AS `Total 15` FROM `table_16` t16, `table_15` t15 
GROUP BY t16.`Dep Name` 

Это дает мне неправильные итоги, но когда я делаю итоговые данные отдельно, они работают нормально. Что я здесь делаю неправильно?

EDIT: Хорошо, моя главная цель состояла в том, чтобы создать представление, но, по-видимому, согласно MySQL Documentation подзапросы не поддерживаются представлениями. Есть ли другой способ добиться такого же результата и создать представление?

+0

Пожалуйста, покажите нам образцы данные. Каковы столбцы каждой таблицы и покажите нам несколько строк в таблицах вместе с ожидаемым результатом. –

ответ

0

Вы по существу делаете CROSS JOIN, который производит декартово произведение строк обеих таблиц.

Вы можете вместо первого агрегата и затем присоединиться:

SELECT t16.`Dep Name`, `Total 16`, `Total 15` 
FROM (
    SELECT `Dep Name`, 
     sum(`number_courses`) AS `Total 16` 
    FROM `table_16` 
    GROUP BY `Dep Name`) t16 
JOIN (
    SELECT `Dep Name`, 
     sum(`number_courses`) AS `Total 15` 
    FROM `table_15` 
    GROUP BY `Dep Name` 
) t15 ON t16.`Dep Name` = t15.`Dep Name` 
+0

Хорошо, моя главная цель состояла в том, чтобы создать представление, но, по-видимому, согласно [mysql documentation] (http://dev.mysql.com/doc/refman/5.7/ru/view-restrictions.html) подзапросы не поддерживаются Просмотры. Есть ли другой способ добиться такого же результата и создать представление? – ybce

Смежные вопросы