我有一個很難描述這一點,這是很可能的,我提出這個難度比它應該是...查詢來獲取職位,如果用戶投票後
基本上,我有一個頁面充滿了針腳/帖子,用戶可以upvote或downvote他們。在一個查詢中,我想獲得一個引腳列表,但也要加入兩個表格,以查看用戶是否投了或投下了他們的投票。
表結構:
pins table
| id | title |
+------+-------------------+
1 Post 1
2 Post 2
3 Post 3
4 Post 4
user_upvotes table
| id | user_id | pin_id |
+------+-----------+----------+
1 1 2
2 2 1
3 2 3
4 2 1
user_downvotes table
| id | user_id | pin_id |
+------+-----------+----------+
1 2 2
2 1 1
3 1 3
4 1 1
以下是我已經嘗試了查詢,但最終複製頁面上的插針。
SELECT pins.id AS pin_id, title, user_upvotes.id AS upvote, user_downvotes.id AS downvote
FROM pins
LEFT JOIN user_upvotes ON user_upvotes.pin_id = pins.id AND user_upvotes.user_id = 2
LEFT JOIN user_downvotes ON user_downvotes.pin_id = pins.id AND user_downvotes.user_id = 2
這導致(注意pin_id 1重複兩次):
| pin_id | title | upvote | downvote |
| 1 | Post 1 | (NULL) | 2 |
| 1 | Post 1 | (NULL) | 4 |
| 2 | Post 2 | 1 | (NULL) |
| 3 | Post 3 | (NULL) | 3 |
| 4 | Post 4 | (NULL) | (NULL) |
從這一點來說我只是檢查,如果該值爲NULL,如果沒有,我附上一個CSS類,表明它已被提高或降低。
本質上,我想上面的結果,只是沒有重複的引腳。如果你有更好的方式來做到這一點,請隨時讓我知道。
你應該保持領域並defalut將它設置爲0遞增或遞減遞增或遞減計數器upvotes和downvotes。 – Smit