2

あるテーブルから値を取得し、別のテーブルから対応する値を取得する SQL ステートメントを作成しようとしています。これは、結合で使用されている値の 1 つが null でない限り正常に機能し、何も返されません。結合が null の場合、スクリプトが値 (「Nothing」など) を返すようにしたいと考えています。これは可能ですか?選択で NVL を使用できることはわかっていますが、結合はどうですか? これが私のスクリプトです:

 SELECT  
 i.equip_pk,
 i.request_pk, 
 MY_ALIAS.EQUIP_ALIAS_ID 
 FROM
 tableOne i
 JOIN table2 MY_ALIAS ON (i.EQUIP_PK = MY_ALIAS.EQUIP_PK)
 WHERE i.request_pk=:requestPk 

Oracle 10g を使用していますが、このスクリプトは PL/SQL としては使用されません。

助けてくれてありがとう

ジェイソン

4

2 に答える 2

3

を使用できますLEFT JOIN。からすべての行が返さtableOneれ、2 番目のテーブルで一致が見つからない場合は null が返されます。その後、あなたがNVL述べたように使用できます。

SELECT  
 i.equip_pk,
 i.request_pk, 
 NVL(MY_ALIAS.EQUIP_ALIAS_ID, 'Nothing here')
 FROM tableOne i
 LEFT OUTER JOIN table2 MY_ALIAS ON (i.EQUIP_PK = MY_ALIAS.EQUIP_PK)
 WHERE i.request_pk=:requestPk 

から null が予想される場合はequip_pk、それを に適用できますNVL。null であってLEFT JOINも、適切な結果が得られます。

于 2013-04-12T15:14:31.297 に答える
0
SELECT  
 NVL(i.equip_pk, 'Nothing'),
 NVL(i.request_pk, 'Nothing)', 
 MY_ALIAS.EQUIP_ALIAS_ID 
 FROM
 tableOne i
 FULL JOIN table2 MY_ALIAS ON (i.EQUIP_PK = MY_ALIAS.EQUIP_PK)
 WHERE i.request_pk=:requestPk 
于 2013-04-12T15:15:04.493 に答える