2013-12-09 40 views
0

我現在有2個表:如何從兩個表中獲得特定用戶的總和?

最愛: 用戶ID drinkName

歷史: 用戶ID drinkName

我想要得到的總次數之和的特定用戶ID在每個表中顯示出來,然後是兩個表中userID顯示的總次數。

(SELECT COUNT(userID) AS totalDrinks FROM History 
WHERE userID = 'sai') union 
(SELECT COUNT(userID) AS totalDrinks FROM Favorite 
WHERE userID = 'sai') 

這樣的代碼讓我以下的輸出:

totalDrinks

但是我試圖使用MySQL和功能,那不是添加兩件事情雖然。 所以我想知道如何重寫我的查詢輸出6?

+0

但你是否期待3個輸出(每個表格一個,然後兩個總和)或只有兩個表的總和? –

+1

我只需要分別輸出6個。謝謝, – user2981811

回答

0

您的UNION方法幾乎在那裏。你將不得不SUM這兩個查詢的結果:

SELECT SUM(totalDrings) totalDrings FROM (
    SELECT COUNT(*) totalDrinks FROM History 
    WHERE userID = 'sai' 
    UNION ALL 
    SELECT COUNT(*) FROM Favorite 
    WHERE userID = 'sai' 
) s 

有幾件事要注意。您應該使用UNION ALL,否則如果COUNT產生相同的數字,那麼它們將只添加一次。另一件事是你不應該在這裏使用INNER JOIN,因爲這將迫使用戶出現在這兩個表中。

1
SELECT SUM(userID)as totalDrinks FROM History h 
JOIN Favorite f ON h.userID=f.userID 
GROUP BY userID 
WHERE userID = 'sai' 
相關問題