2016-05-24 64 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` 

这给了我错误的总数,但当我分别做总计时,他们工作得很好。我在这里做错了什么?

编辑:好的,我的主要目标是创建一个视图,但显然根据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文档](http://dev.mysql.com/doc/refman/5.7/en/view-restrictions.html)子查询不支持观点。有另一种方法可以达到同样的效果并创建视图吗? – ybce

相关问题