PostgreSQL从3个表中加入JOIN数据

时间:2013-04-03 22:44:28

标签: postgresql

我是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 ......”)。

谢谢! 约翰

2 个答案:

答案 0 :(得分:106)

类似的东西:

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

答案 1 :(得分:13)

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

SELECT name, pathfilename
  FROM table1
  NATURAL JOIN table2
  NATURAL JOIN table3
  WHERE name = 'John';