I have to come up with 5 different ways (unique execution plans) to process the following query.

**Find the items that are delivered by all suppliers.**

My database holds the following tables:

**QSPL** – it holds a list of supplier names

* SPLNO (number)
* SPLNAME (varchar)

**QDEL**– it holds delivery items, suppliers, and departments

* DELNO (number)
* DELQTY (number)
* ITEMNAME (varchar)
* DEPTNAME (varchar)
* SPLNO (number)

**QITEM** – it holds list of items

* ITEMNAME (varchar)
* ITEMTYPE (varchar)
* ITEMCOLOR (varchar)

I was able to successfully come up with the following four unique queries.

**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);

```

I have no idea what to do for a 5th unique query.
Does anyone have a clue?

I tried to put this question in the best possible context with significant detail, feedback is greatly appreciated.

Thanks