と の 2 つのテーブルがck_startup
ありck_price
ます。価格テーブルには、列、、、、、cu_type
およびが含まれています。スタートアップ テーブルは、 上の 1 対多の関係を介して価格テーブルにリンクされています。prd_type
part_cd
qty
dllrs
ck_startup.prd_type_cd = ck_price.prd_type
価格表には、同じ製品/部品/数量の複数のエントリが含まれていますが、顧客タイプは異なります。すべての顧客タイプが、これら 3 つの値の同じ固有の組み合わせを持っているわけではありません。次の 2 つのことを行うクエリを作成しようとしています。
- いくつかの列を結合します
ck_startup
(ck_price
説明、およびいくつかの追加の値)。 - 顧客タイプごと
ck_price
の列でそれ自体に結合します。dllrs
したがって、合計で、製品/部品/数量の各一意のキーのインスタンスは 1 つしかなく、各顧客の価格列に値がある場合はその値になります。
私は自己結合テーブルを使用したことがありません。これまでのところ、両方の顧客が同じオプションを利用できる場合にのみレコードを表示できます。
誰かがサンプル コードを投稿するように要求するので、次のクエリを使用して、不足している価格を表示しません。
select pa.*, pac.dllrs from ck_price pa
join ck_price pac on pa.prd_type = pac.prd_type and pa.part_carbon_cd = pac.part_carbon_cd and pa.qty = pac.qty
where pa.cu_type = 'A' and pac.cu_type = 'AC';
編集: 2 つのテーブルのサンプル データと、完了時にどのように表示するかを次に示します。
CK_STARTUP +-----+-----------------+-------------+ | | CD | DSC | PRD_TYPE_CD | +-----+-----------------+-------------+ | | 3D | もの | SKD3 | | | DC | DC | 違うもの | SKD | | | DN2 | 似たようなもの | SKD | +-----+-----------------+-------------+ CK_PRICE +--------+-------------+---------+-----+-------+ | | CU_TYPE | PRD_TYPE_CD | PART_CD | 数量 | DLLRS | +--------+-------------+---------+-----+-------+ | | あ | SKD3 | 1 | 100 | 10 | | | あ | SKD3 | 1 | 200 | 20 | | | あ | SKD3 | 1 | 300 | 30 | | | あ | SKD | 1 | 100 | 50 | | | あ | SKD | 1 | 200 | 100 | | | エアコン | SKD3 | 1 | 300 | 30 | | | エアコン | SKD | 1 | 100 | 100 | | | エアコン | SKD | 1 | 200 | 200 | | | エアコン | SKD | 1 | 300 | 300 | | | エアコン | SKD | 1 | 400 | 400 | +--------+-------------+---------+-----+-------+ コンボ: +----+-----------------+---------+-----+---------+ ----------+ | | CD | DSC | PART_CD | 数量 | DLLRS_A | DLLRS_AC | +----+-----------------+---------+-----+---------+ ----------+ | | 3D | もの | 1 | 100 | 10 | null | null | | | 3D | もの | 1 | 200 | 20 | null | null | | | 3D | もの | 1 | 300 | 30 | 60 | | | DC | DC | 違うもの | 1 | 100 | 50 | 100 | | | DC | DC | 違うもの | 1 | 200 | 100 | 200 | | | DC | DC | 違うもの | 1 | 300 | null | null | 300 | | | DC | DC | 違うもの | 1 | 400 | null | null | 400 | +----+-----------------+---------+-----+---------+ ----------+