编辑后的帖子:
所以我已经得到了下面的表格,我试图显示来自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)
);
答案 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;
下次提问时,对输出的更清晰的定义会很棒。
此致