首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres:外键不匹配所有行

Postgres:外键不匹配所有行
EN

Stack Overflow用户
提问于 2015-05-13 22:13:57
回答 1查看 38关注 0票数 1

我开始学习数据库,我对外键有问题。

我有两张桌子:

1)有电影的桌子

代码语言:javascript
复制
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)具有可用性的表

代码语言:javascript
复制
create table availability(
    id_a serial primary key,
    availability (varchar 20) NOT NULL,
)

桌上电影看上去像:

  1. 雷神蓝-雷2012 1
  2. 阿凡格斯2蓝光2014 2
  3. 都灵大DVD 2008 1
  4. 泰坦尼克号DVD 1998 2

表可用性如下: 1.可用2.不可用

当我输入这个:

代码语言:javascript
复制
SELECT movies.id_n,movies.name,availability.availability 
FROM movies 
full outer join availability on movies.id_n = availability.id_a;

可用性只出现在前两列:

  1. 雷神可用
  2. Avangers 2不可用
  3. 都灵大师
  4. 泰坦尼克号DVD

你能帮我在我的数据库里找到下一部电影吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-13 22:27:47

给你:

代码语言:javascript
复制
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 *相当于“选择所有列”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30226099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档