选择用户和所有投票SQL
我有一个选择用户和所有投票SQL,sql,postgresql,Sql,Postgresql,我有一个users表,表中有user\u id和username字段,我是这样查询的: SELECT user_id, username FROM users WHERE user_id=$1 我还有一个投票表,其中有post\u id和user\u id字段。 user_id是一个外键,引用users表中的user_id字段 我想添加到我的初始查询中,以选择此用户的所有子投票,并使其在同一查询中运行。也许这需要进入一个单独的查询?我想一次完成这一切,以获得最准确的结果,但我还没有找到一种方法
users
表,表中有user\u id和username字段,我是这样查询的:
SELECT user_id, username FROM users WHERE user_id=$1
我还有一个投票
表,其中有post\u id和user\u id字段。
user_id是一个外键,引用users表中的user_id字段
我想添加到我的初始查询中,以选择此用户的所有子投票,并使其在同一查询中运行。也许这需要进入一个单独的查询?我想一次完成这一切,以获得最准确的结果,但我还没有找到一种方法
数据库是postgres btw
编辑
好的,首先我尝试了提供的两种内部联接方法,如果没有投票,这两种方法都不起作用
一旦有了选票,我就用左外的东西。。它返回如下表:
user_id | username | post_id
---------+----------+---------
6 | dbot77 | 3
6 | dbot77 | 5
但它会返回无用的重复信息
我只是想,只是我抓不住
user_id | username | post_id
---------+----------+---------
6 | dbot77 | 3
| | 5
甚至更好
user_id | username | vote_post_ids
---------+----------+---------
6 | dbot77 | [5, 3, etc.]
| |
试试这个:
SELECT users.user_id, users.username, votes.column_name
FROM votes
INNER JOIN users
ON votes.user_id = users.user_id
WHERE votes.user_id = $1;
请参阅:试试这个:
SELECT users.user_id, users.username, votes.column_name
FROM votes
INNER JOIN users
ON votes.user_id = users.user_id
WHERE votes.user_id = $1;
请参阅:好了,这终于对我起作用了
SELECT u.user_id
,u.username
,ARRAY(SELECT v.post_id FROM votes v WHERE v.user_id=u.user_id) AS votes
FROM users u
WHERE u.user_id=$1
它返回:
user_id | username | votes
---------+----------+-------
6 | dbot77 | {3,5}
好了,这终于对我起作用了
SELECT u.user_id
,u.username
,ARRAY(SELECT v.post_id FROM votes v WHERE v.user_id=u.user_id) AS votes
FROM users u
WHERE u.user_id=$1
它返回:
user_id | username | votes
---------+----------+-------
6 | dbot77 | {3,5}
你到底想从“选票”表中得到什么?每个用户的投票数?我想获得引用我的用户的每个投票行。我妈妈说这句话很简单,所以我觉得很尴尬。请帮助如果我们为您提供了sql,我们将对您造成伤害:-)您应该阅读有关内部连接的内容谢谢您给我一个参考,我正在尝试文档中的不同解决方案。。我对SQL很陌生,你到底想从“投票”表中得到什么?每个用户的投票数?我想获得引用我的用户的每个投票行。我妈妈说这句话很简单,所以我觉得很尴尬。请帮助如果我们为您提供了sql,我们将对您造成伤害:-)您应该阅读有关内部连接的内容谢谢您给我一个参考,我正在尝试文档中的不同解决方案。。我对sql非常陌生