0

私のクエリでは、最初のテーブルの指定された列が null の場合にのみ、テーブルを結合したいと考えています。結合を行う方法。これは 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 でない場合、この結合は実行されません。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 に答える