0

在我的查询中,我只想在第一个表的指定列为空时才加入表。我怎样才能加入。这是一个 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 时,此连接才可用。如果该列不为空,则不应完成此连接。我如何在 Postgres 中进行操作(我使用 postgres 8)。

4

1 回答 1

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' ; 
于 2013-11-06T11:17:06.303 回答