Facendo riferimento alla slide della parte parte 3 che riporta: Persone che hanno un reddito maggiore del (o uguale al) reddito di tuttele persone con meno di 30 anni. select nome from persone where reddito >= all (select reddito from persone where eta < 30) uno studente mi chiede: come facciamo a scriverlo senza all? E' un ottima domanda e mi dispiace che non me l'abbia chiesta durante la lezione. La riprender la prossima volta. Intanto ecco la risposta: Dobbiamo rappresentare "tutte" con un "non esiste non", cio utilizzando una differenza e negando la condizione iniziale. In pratica stiamo riesprimendo la query come: Persone *tranne* quelle che hanno un reddito *minore* di *qualche* persona con meno di 30 anni. select nome -- persone from persone except -- tranne select p.nome -- persone che hanno un reddito minore di qualche persona con meno di 30 anni from persone p, persone pp where p.reddito < pp.reddito and pp.eta < 30 In MySQL simuliamo "except" usando il "not in" nel "where" come al solito: select nome from persone where nome not in (select p.nome from persone p, persone pp where p.reddito < pp.reddito and pp.eta < 30) Buon lavoro. -G. De Giacomo