我正在构建一个黑客新闻风格的页面,我正在尝试从数据库中获取一个帖子列表以显示在页面上,包括关于当前用户是否对特定帖子进行投票的数据
我正在尝试查询posts
的列表(来自posts
表),我想在votes
表上执行联接(post.id on votes)。 postId)查看当前用户是否已对某个帖子进行投票,并为每个回复的帖子返回userHasVoted
之类的内容,即时计算。
我一直试图让这种情况发生,但似乎只返回用户投票的帖子。
如何查询数据库以显示每个帖子以及是否由特定用户投票?
这是我的投票表:
+----+--------+--------+-------+
| id | userId | postId | value |
+----+--------+--------+-------+
| 1 | 1 | 1 | 1 |
| 2 | 2 | 1 | 1 |
| 3 | 4 | 3 | 1 |
| 4 | 1 | 5 | 0 |
| 5 | 3 | 2 | 1 |
| 6 | 4 | 8 | 1 |
| 7 | 1 | 8 | 1 |
| 8 | 4 | 9 | 1 |
| 9 | 1 | 9 | 1 |
+----+--------+--------+-------+
这是我的帖子表(省略标题,内容,链接等):
+----+---------------+--------+
| id | publishStatus |authorId|
+----+---------------+--------+
| 1 | PUBLIC | 1 |
| 2 | PUBLIC | 2 |
| 3 | PUBLIC | 3 |
| 4 | PUBLIC | 4 |
| 5 | PUBLIC | 2 |
| 6 | PUBLIC | 1 |
| 7 | PUBLIC | 1 |
| 8 | PUBLIC | 1 |
| 9 | PUBLIC | 1 |
+----+---------------+--------+
答案 0 :(得分:1)
以下是您可以获得Yes
或No
而不是1
或0
SELECT DISTINCT p.*, CASE
WHEN v.value = 0
THEN 'No'
ELSE 'Yes'
END userHasVoted
FROM posts p
INNER JOIN votes v ON p.id = v.postid
答案 1 :(得分:-2)
---------------------------- - 查找特定帖子的所有用户的总投票数 < / p>