SQL:如何从单独的表动态计算值?

问题描述 投票:1回答:2

我正在构建一个黑客新闻风格的页面,我正在尝试从数据库中获取要显示在页面上的帖子列表,包括关于当前用户是否已对特定帖子进行投票的数据。

我正在尝试查询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 |
+----+---------------+--------+
sql join inner-join
2个回答
1
投票

以下是一个例子,你可以得到YesNo而不是10

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

enter image description here


-2
投票

选择a.name作为post_name,sum(vote.value)count_of_votes来自a.id = vote.postid group on name a join a vote

-----------------------------查找所有用户对特定帖子的总投票数

© www.soinside.com 2019 - 2024. All rights reserved.