我必须想出 5 种不同的方式(独特的执行计划)来处理以下查询。
查找所有供应商交付的项目。
我的数据库包含以下表格:
QSPL – 它包含供应商名称列表
- SPLNO(数字)
- SPLNAME (varchar)
QDEL - 它包含交付项目、供应商和部门
- 德尔诺(数字)
- 延迟(数字)
- 项目名称(varchar)
- 部门名称(varchar)
- SPLNO(数字)
QITEM - 它包含项目列表
- 项目名称(varchar)
- 项目类型(varchar)
- 项目颜色(varchar)
我能够成功提出以下四个独特的查询。
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 个唯一查询。有人有线索吗?
我试图用重要的细节将这个问题放在最好的上下文中,非常感谢反馈。
谢谢