Capita spesso di dover estrapolare dati aggregati del tipo:
SELECT Prodotti.Codice, SUM(Quantita) as QuantitaVenduta FROM RigheOrdini JOIN Prodotti ON RigheOrdini.IDProdotto = Prodotti.ID Group By Prodotti.Codice Order by Prodotti.Codice
e di dover aggiungere altre informazioni nella Select. La soluzione è:
SELECT Prodotti.Codice, Prodotti.Nome, Vendite.QuantitaVenduta FROM Prodotti JOIN (SELECT IDProdotto, SUM(Quantita) as QuantitaVenduta FROM RigheOrdini Group By IDProdotto) as Vendite ON Prodotti.ID = Vendite.IDProdotto Order by Prodotti.Codice
Altra questione interessante è che è generalmente più performante:
SELECT Clienti.Nome, Clienti.Cognome, Clienti.Regione FROM Clienti WHERE EXISTS (SELECT * FROM BaseCamp WHERE BaseCamp.Regione = Clienti.Regione) ORDER BY Clienti.Cognome, Clienti.Nome
invece che:
SELECT DISTINCT Clienti.Nome, Clienti.Cognome, Clienti.Regione FROM Clienti INNER...