2014-11-05 118 views
0

我有一個表「article_likes」用戶以及他們是否喜歡或不喜歡這篇文章。每喜歡/不喜歡datetime保存和id的文章。 喜歡/不喜歡在「狀態」欄中保存爲布爾值。喜歡每個用戶的最新日期

id  article_id  user_id  like_date    status 
1  8    2   2014-11-03 21:30:33 1 
2  8    2   2014-11-03 21:31:00 0 
3  8    3   2014-11-03 22:30:59 1 
4  9    6   2014-11-03 22:36:25 1 
5  9    2   2014-11-03 23:19:46 1 

我喜歡得到一篇文章的喜歡量。所以只有最近日期的狀態對於計數纔是有效的。

所以所需結果將是:

article_id  amount_likes 
8    1 
9    2 

我想每篇文章ID的結果,所以並不是所有的一次。

任何人都可以幫助我嗎?謝謝!

+0

'GROUP BY DATE(like_date)'? – 2014-11-05 08:32:49

+2

難道你不喜歡'-1'並總結它? – jurgemaister 2014-11-05 08:33:01

+0

你是什麼意思最新日期?每篇文章的最新日期或總體最新日期? – TheProvost 2014-11-05 08:35:31

回答

1

如果你不喜歡存儲爲-1,那麼這將解決你的問題:)

SELECT article_id, SUM(IF(status = 1, 1, -1)) AS amount_likes FROM article_likes 
GROUP BY article_id 

SELECT article_id, SUM(status) AS amount_likes FROM article_likes 
GROUP BY article_id 
+0

這確實解決了我的問題,謝謝! – eataesse 2014-11-05 08:49:52

0

試試這個:

SELECT `article_id`,COUNT(`user_id`) AS amount_likes FROM `links` 
WHERE `status`='1' GROUP BY DATE(`like_date`), `user_id`; 

小提琴這裏 - http://sqlfiddle.com/#!2/3b7bb6/4

希望它有幫助

+0

不符合:「所以只有最近日期的狀態對計數有效」 – 2014-11-05 08:49:22

0
SELECT article_id, COUNT(IF(
          SELECT CASE 
            WHEN status=1 THEN 'true' 
            ELSE 'false' 
            END), 
           'true','false' 
          ) 
         ) 
FROM article_likes 
GROUP BY article_id 
ORDER BY article_id