Ciao a tutti, ho 4 tabelle: clienti, ricevute, prodotti_ricevuta, prestazioni_ricevuta:
clienti:
id_cliente
nome

ricevute:
id_ricevuta
id_cliente
data_ricevuta

prodotti_ricevuta:
id_ricevuta
quantita
prezzo

prestazioni_ricevuta:
id_ricevuta
quantita
prezzo

Vorrei ottenere l'elenco di tutte le ricevute, emesse in un determinato anno, comprensivo del totale per ogni ricevuta (dato dalla tabella prodotti+prestazioni).
Sono riuscito a farlo con la seguente query:
codice:
SELECT ricevute.*, clienti.nome AS cliente, r.SommaDitotale
FROM (clienti INNER JOIN ricevute ON clienti.id_cliente = ricevute.id_cliente)
INNER JOIN 
(SELECT ricevute.id_ricevuta,  Sum(p.totale) AS SommaDitotale
FROM ricevute INNER JOIN (SELECT prestazioni_ricevuta.id_ricevuta,  Sum(prestazioni_ricevuta.quantita*prestazioni_ricevuta.prezzo) AS totale
FROM prestazioni_ricevuta 
GROUP BY  prestazioni_ricevuta.id_ricevuta
UNION
SELECT  prodotti_ricevuta.id_ricevuta,  Sum(prodotti_ricevuta.quantita*prodotti_ricevuta.prezzo) AS totale
FROM prodotti_ricevuta
GROUP BY  prodotti_ricevuta.id_ricevuta) AS p ON ricevute.id_ricevuta = p.id_ricevuta
GROUP BY ricevute.id_ricevuta) AS R ON ricevute.id_ricevuta=R.id_ricevuta
WHERE year(data_ricevuta)=2011;
Mi sembra che sia troppo complessa...che ne dite? c'è un modo migliore per ottenere quanto mi serve?
Grazie