如何连接3个表但只返回匹配的行?

时间:2015-10-29 23:47:49

标签: sql postgresql

您好我使用postgres,

我有三张桌子。

table 1

id1 | name 
foo ,  jack 

table 2 

id3 | id1 
orange,  foo 
apple, foo

table 3 

id3|description 
orange, vit.c
apple, vit. a & c 

说id1 = foo;我想要的是在表2中找到与此对应的所有id3(在本例中为橙色和苹果),然后返回表3,其中所有行与表2中的所有id3匹配。

那是一个满口的,抱歉的那个人。我尝试了内连接,左连接,但不断给我更多不匹配的桌子。我可以连续进行,但我想知道是否有办法在步骤中完成所有操作? 如果一切顺利,当我搜索foo时,它应该返回vit.c和vit。一和C

谢谢! 阿迪

2 个答案:

答案 0 :(得分:1)

您提供的数据示例需要简单的连接:

select description
  from table1 t1
  join table2 t2 on t2.id1= t1.id1
  join table3 t3 on t3.id3 = t2.id3
where t1.id1 = 'foo'

答案 1 :(得分:1)

您只需要一个标准WHERE子句:

SELECT table_3.description 
FROM table_1, table_2, table_3
WHERE table_1.id1 = table_2.id1 AND table_2.id3 = table_3.id3

请参阅此处的文档:

http://www.postgresql.org/docs/8.3/static/tutorial-join.html