2016-11-12 45 views
0

我有一個頁面系統像一個在Facebook上,每一個用戶可以喜歡或不喜歡,甚至一個頁面。 status = 1是一個像,0是一個不喜歡。展項,通過分隔喜歡惡

這是我的查詢:

SELECT 
p.title_de, de, p.keyname, l.status, 
(CASE WHEN l.status = '1' THEN title_de END) AS liked, 
(CASE WHEN l.status = '0' THEN title_de END) AS disliked 
FROM pages_likes l 
JOIN pages p on p.id = l.page_id 
WHERE p.keyname != 'rship' AND l.uid = '311' 
GROUP BY l.page_id 
ORDER BY p.title_de ASC 

問題:

1)我也想算都喜歡和該用戶不喜歡的條目。目前我爲此編寫了額外的查詢,但是我想知道在查詢中實現該計數是否更有效?我試圖使用COUNT,但是我只從整個查詢中得到一個結果。

2)我想顯示公共/相互喜歡我有與該用戶(uid裝置USER_ID)。我試圖添加一個AND 'uid' = 1WHERE,但那不起作用。這也應該由喜歡和不喜歡(status = 10)分開。我想我應該寫一個UNION子查詢?但我不知道如何。

這是我的結構:

enter image description here

+0

你沒有聚合函數。那麼,爲什麼你有GROUP BY子句?並參見http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-查詢 – Strawberry

+0

爲了避免重複的頁面條目作爲頁面標題輸出。 – AlexioVay

+0

'總和(l.status)如喜歡,計數(l.status)-sum(l.status)作爲disliked' – Mike

回答

1

變化的情況下,以

SUM(l.status = 1) AS likes, 
SUM(l.status = 0) AS dislikes,