【发布时间】:2018-09-13 02:21:29
【问题描述】:
我想知道连接的工作方式,我有 3 个表用户、地址和位置,用户和地址表有数据但不在位置。当我加入来自用户的地址时,它返回数据,但是当我加入位置时它不返回数据,我的问题是为什么它是零,因为我加入了用户到地址和用户到位置,所以如果用户有数据地址表然后它将返回该数据但不在位置中,因此不要在位置列中返回位置数据。我的架构是
create temporary table users (
id serial,
username VARCHAR(25) NOT NULL,
PRIMARY KEY (id)
);
CREATE temporary TABLE addresses (
id serial,
user_id int NOT NULL,
city VARCHAR(30) NOT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES users (id)
);
CREATE temporary TABLE location (
id serial,
user_id int NOT NULL,
state VARCHAR(30) NOT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES users (id)
);
insert into users(username) values ('u1'), ('u2'), ('u3'), ('u4')
insert into addresses(user_id, city) values (1, 'c1'), (2,'c2'), (3,'c3')
select *
from users u
inner join addresses a on u.id=a.user_id
inner join location l on u.id=l.user_id;
insert into location(user_id, state) values (3, 's2')
【问题讨论】:
标签: sql postgresql