Interrogazione SQL

select Indirizzo
from Categorie, Negozi, Articoli
where (Categorie.Descrizione='Ferramenta') and
      (Codice=Categoria) and (Nome=Negozio) and
      (Articoli.Descrizione='scala')

except

select Indirizzo
from Categorie, Negozi, Articoli
where (Categorie.Descrizione='Ferramenta') and
      (Codice=Categoria) and (Nome=Negozio) and
      (Articoli.Descrizione='antenna');



Commento

Per ottenere quanto voluto bisogna prima costruire l'insieme degli indirizzi di ferramenta che vendono scale e da questi eliminare quelli che vendono antenne. Specificare la clausola

where (Categorie.Descrizione='Ferramenta') and
      (Codice=Categoria) and (Nome=Negozio) and
      (Articoli.Descrizione='scala') and
      (Articoli.Descrizione<>'antenna')
non ha senso in quanto è evidente (tautologico) che se un articolo è una scala non può essere anche un'antenna!