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