2013-05-27 114 views
1

首先我有两个表:MySQL查询。减去问题

提要:(ID,CONTENT_ID,作家)feeds_ratings:(ID,FEED_ID(FK供稿(ID)),USER_ID,评分)

我想要做的是获得特定用户的特定作者的总评分差异。

为了解释更多,假设我们在提要表(1,3245,test),(2,3215,test),(3,3122,test)和树行上有三行feed_ratings表,(1,1,12,like),(1,2,12,like),(1,3,12,dislike)

输入将是user_id,作者和我对于特定的输入作者,希望输出成为输入用户对不喜欢和喜欢的差异。 (在这个例子中,它会是1,因为两个喜欢和一个不喜欢。

这怎么可以在mysql查询中实现?我尝试搜索和我自己的一些代码,但我不能让它工作, !所以任何帮助表示赞赏

+0

为什么不提供sqlfiddle? (这应该是一个标准要求。) – Strawberry

回答

2

像这样将工作用SUMCASE - 对于喜欢加1,-1表示不喜欢:

SELECT SUM(CASE WHEN fr.rating = 'like' THEN 1 ELSE -1 END) TotalLikes 
FROM Feeds F 
    INNER JOIN Feeds_Ratings FR ON F.id = FR.feed_id 
WHERE F.author = 'test' 
    AND FR.user_id = 12 

很明显,用合适的值替换author和user_id - 这些仅仅是您的示例输入。

+0

快速的甜心! 我无法弄清楚如何做总和部分,非常感谢。我会将它标记为已被接受。 – Systemfreak

+0

@Systemfreak - np,很高兴我能帮上忙! – sgeddes