次のクエリを処理するには、5 つの異なる方法 (固有の実行計画) を考え出す必要があります。
すべての仕入先から配送される品目を検索します。
私のデータベースには次のテーブルがあります。
QSPL – サプライヤー名のリストを保持します
- SPLNO (番号)
- SPLNAME (varchar)
QDEL – 配送品目、サプライヤー、および部門を保持します
- デルノ(数)
- DELQTY (数値)
- ITEMNAME (varchar)
- DEPTNAME (varchar)
- SPLNO (番号)
QITEM – アイテムのリストを保持します
- ITEMNAME (varchar)
- ITEMTYPE (varchar)
- ITEMCOLOR (varchar)
次の 4 つのユニークなクエリを思いつくことができました。
1.
select itemname --, etc.
from qitem
where itemname not in
(select itemname
from qitem, qspl
where (char(splno)+itemname) not in
(select char(splno)+itemname
from qdel));
2.
select itemname --,etc.
from qitem
where not exists
(select *
from qspl
where not exists
(select *
from qdel
where qdel.itemname = qitem.itemname
and Qdel.splno = qspl.splno));
3.
select a.itemname --, etc
from qitem a join qdel b on a.itemname = b.itemname
group by a.itemname
having count (distinct splno) = (select count(*) from qspl);
4.
select itemname
from qdel
group by itemname
having count (distinct splno) = (select count(*) from qspl);
5 番目の一意のクエリに対して何をすべきかわかりません。誰も手がかりを持っていますか?
私はこの質問を可能な限り詳細に説明しようとしましたが、フィードバックは大歓迎です。
ありがとう