Salve a tutti,sono un principiante,quindi abbiate pietà.Allego nel post,un esercizio con conseguente mia risoluzione,non essendo esperto nel campo vorrei sapere se la mia soluzione sia giusta e al contempo se ci siano soluzioni più veloci:
Data la seguente relazione:
SEMINARIO(CodS, TitoloS, Argomento, Durata)
DOCENTE(CodD, NomeD, DataNascita)
CALENDARIO(CodS, DataInizio, OraInizio CodD, Aula)
COMPETENZE(CodD, Argomento)
per i docenti che hanno tenuto esclusivamente seminari su argomenti per cui dispongono delle competenze,visualizzare il codice e il nome del docente, e, per ogni seminario tenuto, il titolo e il numero complessivo di edizioni a calendario.
SOLUZIONE:
SELECT DISTINCT TitoloS,NumEdizioni,C.CodD,Nome
FROM CALENDARIO AS C,DOCENTE AS D,SEMINARIO AS S,(SELECT CodS,COUNT(*)AS NumEdizioni
FROM CALENDARIO
GROUP BY CodS) AS E
WHERE E.CodS=S.CodS AND D.CodD=C.CodD AND C.CodD IN(SELECT DISTINCT CP.CodD
FROM COMPETENZE AS CP
SEMINARIO AS S
WHERE S.Argomento=CP.Argomento)
GROUP BY TitoloS;