PostgreSQL - 根据其中一个表的约束查看来自不同表的数据

时间:2017-03-23 01:24:25

标签: postgresql

编辑后的帖子:

所以我已经得到了下面的表格,我试图显示来自UniMember的字段名称,来自表格Staff的电话和来自表格Afl的起始字段,基于Afl中的结束字段为空的约束。我是一个非常新的Postgresql,基本上已经坚持了2天。我尝试了很多不同的查询,但还没有能够让它显示出来。

预期的输出应该是:

姓名|电话|起始

谢谢!

create table UniMember (
    id          integer, -- PG: serial
    unswid      integer unique, -- staff/student id (can be null)
    password    ShortString not null,
    family      LongName,
    given       LongName not null,
    title       ShortName, -- e.g. "Prof", "A/Prof", "Dr", ...
    sortname    LongName not null,
    name        LongName not null,

    primary key (id)
);

create table Staff (
    id          integer references People(id),
    office      integer references Rooms(id),
    phone       PhoneNumber, -- full number, not just extension
    primary key (id) 
);

create table Afl (
    staff       integer references Staff(id),
    orgUnit     integer references OrgUnits(id),
    role        integer references Staff_roles(id),
    isPrimary   boolean, -- is this role the basis for their employment?
    starting    date not null, -- when they commenced this role
    ending      date,  -- when they finshed; null means current
    primary key (staff,orgUnit,role,starting)
);

2 个答案:

答案 0 :(得分:0)

尝试查看INNER JOINS,理想情况下需要查看所有表,但需要在表(主键和辅助键)之间使用公共字段将表链接在一起并显示所需的数据。

答案 1 :(得分:0)

您应该创建一个视图,您可以使用该视图以正确的方式输出数据。你可以这样做。

create view test as select name, phone, starting 
from unimember a, staff b, afl c 
where b.id = c.staff

现在您可以选择视图:

Select * from test;

下次提问时,对输出的更清晰的定义会很棒。

此致