Postgresql:如何在两个表之间关联数据?

时间:2014-12-11 18:46:30

标签: postgresql

我已经为Postgresql 9.3搜索了这个问题,看到没有足够答案的解决方案。 Psql文档也没有帮助。

说我有两张桌子:

  • 用户(用户名,密码,ID)
  • 数据(标题,描述,身份证)

我已经创建了一个外键,但我不清楚它是如何工作的。我希望用户能够查看和编辑他们的数据,我希望数据与用户相关。这是我们一直在博客,Facebook或Twitter上看到的东西。

如何在表之间创建关系,以便用户提交的每个数据都与它们相关联?

1 个答案:

答案 0 :(得分:1)

假设两个表上的 id 是用户的 id ,那么获取所有用户数据所需的是:

SELECT u.username, d.title, d.description
FROM users u
LEFT JOIN data d ON d.id = u.id

如果没有数据,d.titlea和d.description将为NULL。如果您只希望拥有数据的用户只需将LEFT JOIN替换为JOIN

编辑:(根据评论)

如果您希望用户拥有数据的所有权,并且数据一次只属于一个用户,您只需要在user_id表中拥有data。我假设表中的id是用户的。在这种情况下,在创建表时,您需要执行以下操作:

CREATE TABLE data (
  id SERIAL,
  title varchar(50) NOT NULL,
  description varchar(255),
  user_id references users(id) -- this is your foreign key
);

然后使用user_id adjustements再次查询:

SELECT u.username, d.title, d.description
FROM users u
LEFT JOIN data d ON d.user_id = u.id