0

複数のサブクエリを含むクエリを発行しています。2つのサブクエリのいずれかが失敗した場合、クエリは行を返しません。何かが戻ってくる唯一の方法は、両方のクエリが成功した場合です。別のサブクエリが失敗した場合に成功したサブクエリの結果を取得する方法はありますか?クエリの先頭とサブクエリでNVLを試しましたが、成功しませんでした。スカラーサブクエリがnullを返すことは知っていますが、複数の値が必要です。これは、スキーマの変更/ UNIONがオプションではない、はるかに大きなものから抽出した再現可能なサンプルクエリです(少なくとも私はそうは思いません)

create table testTBLA(
  product VARCHAR2(10),
  quantity NUMBER,
  code NUMBER
);

INSERT INTO testTBLA VALUES ( 'bottle', 10,3);
INSERT INTO testTBLA VALUES ( 'can', 17, 16);

create table testTBLB(
  fruit VARCHAR2(10),
  asize NUMBER,
  code NUMBER
)

INSERT INTO testTBLB VALUES ( 'melon', 3, 14);
INSERT INTO testTBLB VALUES ( 'apple', 5, 16);

他がnullの場合にいくつかの結果を取得する方法はありますか?

--say code inparam is 16
select fruit, asize, product, quantity  from 
(select product, quantity from testTBLA where code=16),
(select fruit, asize from testTBLB where code=16)

FRUIT      ASIZE                  PRODUCT    QUANTITY               
---------- ---------------------- ---------- ---------------------- 
apple      5                      can        17                    

--say code inparam is 3
select fruit, asize, product, quantity  from 
(select product, quantity from testTBLA where code=3),
(select fruit, asize from testTBLB where code=3)

FRUIT      ASIZE                  PRODUCT    QUANTITY               
---------- ---------------------- ---------- ---------------------- 

0 rows selected
4

3 に答える 3

2

どちらかの側が欠落している可能性があると仮定します

SQL> ed
Wrote file afiedt.buf

  1  select fruit, asize, product, quantity
  2    from testTBLA a
  3         full outer join testTBLB b on( a.code = b.code )
  4*  where coalesce(a.code,b.code) = 3
SQL> /

FRUIT           ASIZE PRODUCT      QUANTITY
---------- ---------- ---------- ----------
                      bottle             10

SQL> ed
Wrote file afiedt.buf

  1  select fruit, asize, product, quantity
  2    from testTBLA a
  3         full outer join testTBLB b on( a.code = b.code )
  4*  where coalesce(a.code,b.code) = 16
SQL> /

FRUIT           ASIZE PRODUCT      QUANTITY
---------- ---------- ---------- ----------
apple               5 can                17
于 2013-03-15T21:24:10.917 に答える
1
select 
  fruit, asize, product, quantity
from 
  testTBLA
  full join testTBLB using(code)
where
  code = 16

フィドル

于 2013-03-15T21:26:54.890 に答える
0

あなたの質問はあまり明確ではありません。

次のアプローチが効果的かどうかを確認してください。

select fruit, asize, product, quantity  from 
(select product, quantity from testTBLA where code=3) FULL OUTER JOIN
(select fruit, asize from testTBLB where code=3) ON 1=1

これがあなたのデータと私のコードを含むSQLフィドルです:http ://sqlfiddle.com/#!4 / 8b70a / 2

于 2013-03-15T21:39:06.257 に答える