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