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:
Mi sembra che sia troppo complessa...che ne dite? c'è un modo migliore per ottenere quanto mi serve?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;
Grazie

Rispondi quotando