>Ma il problema è che la chiave primaria è un campo composto da
>due valori: nome(che prima ho chiamato id) e dipartimento.
Dato che id rappresenta generalmente un identificatore univoco ho dato per scontato che fosse la PK delle tabelle.
La prossima volta posta i comandi di CREATE TABLE completi di constraints.
>Se utilizzo la not exists mi restituisce empty set.
Questo è il comando corretto:
SELECT *
FROM aula AS A
WHERE NOT EXISTS(
SELECT *
FROM lab
WHERE nome = A.nome
AND dip = A.dip
);
>Ho provato a fare in questo modo, sembra funzionare ma non sono
>certo che sia corretto:
>
>select * from aula as a
> left join lab as l on (a.id = lab.id and a.dip = l.dip)
>where (l.id is null and l.dip is null)
La clausola WHERE può essere semplificata verificando la nullability per una qualunque colonna della tabella lab:
SELECT A.*
FROM aula AS A
LEFT JOIN lab AS L
ON A.nome = L.nome
AND A.dip = L.dip
WHERE L.nome IS NULL;
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org