Buonasera,
qualcuno mi potrebbe aiutare nel ragionamento per fare questa istruzione SQL?    
L'esercizio è il seguente:
Essenze( IDS,Nome)
Produzione( Data, IDEssenzaS, IDEssenzaP, PesoP,PesoS)
dove nella relazione Essenze IDS è la chiave, mentre in produzione la chiave è formata da data, idessenzap,idessenzas e gli attributi idessenzap ed idessenzas sono chiavi esterne. In ogni tupla della relazione Produzione gli attributi pesos e pesop memorizzano rispettivamente il peso in grammi della quantità delle 2 essenze utilizzate per la produzione e gli attributi idessenzap ed idessenzas memorizzano i codici delle essenze (principale e secondaria).
- Visualizzare i codici delle essenze che sono state utilizzate di più (in termini di peso complessivo) come essenze principali rispetto a quanto sono sono state utilizzate come secondari.
select A.Essenza
from ((select idessenzap as essenza, sum(pesop) as pesotot
          from produzione
          group by idessenzap)
uion ( select IDS as essenza, 0 
         from essenze                          // perchè 0??
         where ids not in ( select distinct idessenzap
                                    from produzione)))A,
(( select idessenzas as essenza, sum (pesos) as pesotot
   from produzione
   group by idessenzas)
union (select ids as essenza,0 
          from essenze
          where IDS not in (select distinct idessenzas
                                    from produzione)))b
where a.essenza=b.essenza and a.pesotot>b.pesotot