如何从另一个表引用的表中选择元素?

时间:2015-08-28 14:59:30

标签: sql postgresql

我正在使用postgresql来存储和分析研究项目的数据。我有一组表格,大致如下所示:

fileType (name varchar(80), id serial primary key);
fileTable (...various details, fileType integer references fileType(id), id serial primary key);
parameterTable (... various params, id serial primary key);
resultsTable (fileKey integer references fileTable(id), parameterKey integer references parameterTable(id), ...results);

我想要做的是编写一个类似于以下内容的查询:

SELECT COUNT(... details) FROM resultsTable WHERE parameterKey = ? AND fileKey...

我正在寻找一种方法来从fileKey引用具有特定fileType引用的fileTable的所有点获取结果。

举个例子,如果我有2种文件类型(fileTypeA和fileTypeB),以及一组A或B类型的文件,我想从结果中获取引用fileTypeA的所有文件类型的详细信息。我将如何编写一个执行此操作的查询?

1 个答案:

答案 0 :(得分:1)

使用join关键字使用主键和外键连接表。

根据您的描述,它应该是:

select * 
from resultsTable r
join parameterTable p on r.parameterKey = p.id
join fileTable f on r.fileKey = f.id
join fileType ft on ft.id = f.fileType
where ft.type = 'fileTypeA'

这可以从所有引用fileTypeA的文件类型的结果中获取所有详细信息。