我已经为Postgresql 9.3搜索了这个问题,看到没有足够答案的解决方案。 Psql文档也没有帮助。
说我有两张桌子:
我已经创建了一个外键,但我不清楚它是如何工作的。我希望用户能够查看和编辑他们的数据,我希望数据与用户相关。这是我们一直在博客,Facebook或Twitter上看到的东西。
如何在表之间创建关系,以便用户提交的每个数据都与它们相关联?
答案 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