2013-12-09 43 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' 
相关问题