Postgres INNER JOIN

时间:2013-11-06 11:09:11

标签: sql postgresql

在我的查询中,我只想在第一个表的指定列为空时才连接表。我怎么做加入。这是一个INNER JOIN,共有3个表格。

这是我的查询。

SELECT item_id,item_name
  FROM item i
INNTER JOIN supplier s ON i.item_id=s.items_id
INNER JOIN order O ON O.id=s.req_id
WHERE price>400 AND category='ALL'; 

只有当item表中的'item_order_id'列为NULL时,才能使用此连接。如果该列不为null,则不会执行此连接shuold。我怎么能在Postgres中做(我使用postgres 8)。

1 个答案:

答案 0 :(得分:2)

选项1.将条件放在WHERE子句中:

SELECT item_id,item_name
  FROM item i
INNER JOIN supplier s ON i.item_id=s.items_id
INNER JOIN order O ON O.id=s.req_id
WHERE price>400 AND category='ALL' AND i.item_order_id IS NULL; 

选项2.将条件放入连接中:

SELECT item_id,item_name
  FROM item i
INNER JOIN supplier s ON i.item_id=s.items_id AND i.item_order_id IS NULL
INNER JOIN order O ON O.id=s.req_id
WHERE price>400 AND category='ALL' ;