在我的查询中,我只想在第一个表的指定列为空时才连接表。我怎么做加入。这是一个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)。
答案 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' ;