PostgreSQL JOIN来自3个表的数据

问题描述 投票:58回答:2

我是PostgreSQL的新手,正在尝试编写查询。我敢肯定,对于知道他们在做什么的人来说这很容易-我只是不知道! :)

基本上我有三个表。首先,我存储有关患者的详细信息。在第二篇中,我存储了对它们每个图像的引用。在第三部分中,我存储了指向图像文件路径的链接。我没有设计数据库,所以我不确定为什么要分离图像文件表,但确实如此。

[我想做的是从第一个表中选择数据,从第二个表至第三个表中加入数据,因此我在结果中得到了名称和文件路径。

所以基本结构是:

Table 1:
person_id | name

Table 2:
person_id | image_id

Table 3:
image_id | `path filename`

我想做的是在一个查询中,抓住那个人的'名字'和图像'路径文件名'。

我对所需的联接具有“模板”样式的答案感到满意。我不需要用实际代码编写它。 (即,我认为您可以给我写一个回答SELECT table1.name, table3.pathfilename FROM JOIN ... etc...)。

postgresql
2个回答
119
投票

类似:

select t1.name, t2.image_id, t3.path
from table1 t1 inner join table2 t2 on t1.person_id = t2.person_id
inner join table3 t3 on t2.image_id=t3.image_id

14
投票

也许以下是您正在寻找的内容:

SELECT name, pathfilename
  FROM table1
  NATURAL JOIN table2
  NATURAL JOIN table3
  WHERE name = 'John';
© www.soinside.com 2019 - 2024. All rights reserved.