PostgreSQL从3个表中加入JOIN数据

Joh*_*ary 58 postgresql

我是PostgreSQL的新手并尝试编写查询.我很确定那些知道自己在做什么的人很容易 - 我只是不这样做!:)

基本上我有三张桌子.首先,我存储有关患者的详细信息.在第二个中,我存储了对它们的每个图像的引用.在第三个中,我将链接存储到图像的文件路径.我没有设计数据库,所以我不确定为什么图像文件表是分开的,但确实如此.

我想要做的是从第一个表中选择数据,从第二个表和第三个表中加入数据,这样我最终得到结果中的名称和文件路径.

所以基本结构是:

Table 1:
person_id | name

Table 2:
person_id | image_id

Table 3:
image_id | `path filename`
Run Code Online (Sandbox Code Playgroud)

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

我很满意我需要的连接的"模板"风格答案.我不需要用实际代码编写它.(即我想你可以给我写一个回答"SELECT table1.name,table3.pathfilename FROM JOIN ...... etc ......").

谢谢!!约翰

ozc*_*cho 118

就像是:

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
Run Code Online (Sandbox Code Playgroud)


Dan*_*rey 14

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

SELECT name, pathfilename
  FROM table1
  NATURAL JOIN table2
  NATURAL JOIN table3
  WHERE name = 'John';
Run Code Online (Sandbox Code Playgroud)

  • 让我们说下个月在table1中他添加了一个名为"last_used"的列,表示用户最后一次登录.一个月之后,他还在table3中添加了一个名为"last_used"的列,表示上次显示图像的时间.自然连接现在不会不正当地尝试应用这些列,并且突然他的查询返回的信息比以前少得多,他无法弄清楚为什么因为新的列在原来的一个月和原始的两个月后添加查询是写的? (12认同)