2016-05-24 68 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

相關問題