我开始学习数据库,而且我的外键有问题。
我有两张桌子:
1)带电影的表
create table movies (
id_m serial primary key,
name varchar (20) NOT NULL,
type varchar(20) NOT NULL,
year smallint NOT NULL,
availability smallint references availability(id_a) NOT NULL
)
2)具有可用性的表
create table availability(
id_a serial primary key,
availability (varchar 20) NOT NULL,
)
表格电影如下:
表可用性如下: 1.可用 2.不可用
当我输入时:
SELECT movies.id_n,movies.name,availability.availability
FROM movies
full outer join availability on movies.id_n = availability.id_a;
可用性仅出现在前两列:
你能帮我解决一下如何获得我数据库中下一部电影的可用性吗?
答案 0 :(得分:1)
你走了:
SELECT * FROM movies
join availability on movies.availability = availability.id_a;
更多细节:
你加入了pks(movies.id_n = availability.id_a
),在大多数情况下,连接在fk关系中是有意义的(movies.availability = availability.id_a
)。这是你错过的。其他项目只是清理。
我删除了不需要的full outer
子句。有关联接类型的更好理解,请参阅http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/。
最后select *
相当于“选择所有列”