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

SQL:如何从单独的表中动态计算值?,sql,join,inner-join,Sql,Join,Inner Join,我正在构建一个黑客新闻风格的页面,我试图从数据库中获取一个帖子列表,显示在页面上,包括当前用户是否对某个特定帖子投票的数据 我试图查询一个帖子列表(从帖子表),我想在投票表(post.id on voces.postId)上执行一个联接,查看当前用户是否对给定帖子进行了投票,并为返回的每个帖子返回类似userhasvestate的内容,动态计算 我一直试图做到这一点,但似乎只返回用户投票支持的帖子 我如何查询数据库以显示每个帖子,以及它是否由给定的用户投票 这是我的投票表: +----+----

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

我试图查询一个
帖子列表(从
帖子
表),我想在
投票
表(post.id on voces.postId)上执行一个联接,查看当前用户是否对给定帖子进行了投票,并为返回的每个帖子返回类似
userhasvestate
的内容,动态计算

我一直试图做到这一点,但似乎只返回用户投票支持的帖子

我如何查询数据库以显示每个帖子,以及它是否由给定的用户投票

这是我的投票表:

+----+--------+--------+-------+
| 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 |
+----+--------+--------+-------+
这是我的帖子表(不包括标题、内容、链接等):


下面是一个示例,您可以获得
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

选择a.name作为post\u name,在a.id=vote.posted group by name上发布联合投票的投票总数(vote.value)计数
-----------------------------用于查找特定帖子的所有用户的总投票数

Ah@Brien,但v.userhasvated在
投票数
表的任何一行中都不存在-这就是我要动态计算的内容…请发布您的表定义和一些示例数据。已更新。谢谢啊-但这给了我重复的职位,每个投票有人投;我正在尝试获取没有重复的帖子列表。…。@S.McGraw更新了答案以使用DISTINCT。如果这不是您想要的,我需要看到几行您希望看到的内容,比如一行或两行您希望输出的内容。这样用户就可以对同一篇文章重复投票了?(如果没有,为什么您的投票表有一个
id
列?)我不确定@melpomene是否理解您的意思-投票
id
列只是跟踪db中的每一张投票。从技术上讲,用户可以删除他们的投票-不确定这是否会清除它
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