私は MySQL と MSSQL の経験が豊富ですが、自分自身を SQL の専門家とは考えていません。
Oracle データベースで SQL 作業を実行する必要があります。バージョンはまだわかりませんが、やや最近のはずです (10、11??)。
とにかく、2 つのテーブルにまたがる個別のレコードの数を数えなければなりません。master
議論のために、それらを と と呼びましょうdetail
。
次の SQL は、データに対して必要な数値を示します。ただし、この SQL は最終的に UDF (または Oracle の同等物) に入れられます。しかし、私の質問は、より良い方法はありますか? 高度な Oracle 最適化を使用するか、より優れた SQL クエリを使用することもできます。
ありがとう
select count(*) from
(
select
mas.barcode
, det.barcode_val
from mas
inner join det on (det.trans_id = mas.trans_id and mas.trans_sub_id = det.trans_sub_id)
where
mas.trans_id = 12345
and det.code_type = 'COMMODORE'
group by
mas.barcode
, det.barcode_val
);
データ:
MAS
trans_id trans_sub_id barcode
-------------------------------------
12345 1 COM_A
12345 2 COM_A
12345 3 COM_B
DET
trans_id trans_sub_id code_type barcode_val
-------------------------------------------------------
12345 1 COMMODORE C64
12345 1 COMMODORE C64
12345 1 TANDY TRASH80
12345 2 COMMODORE C128
12345 2 ATARI 800XL
12345 2 COMMODORE AMIGA500
12345 3 COMMODORE C64
Results before count
--------------------
COM_A C64
COM_A C128
COM_A AMIGA500
COM_B C64
Results after count
-------------------
4