PDA

View Full Version : [mysql]select su molte tabelle


RaouL_BennetH
22-02-2008, 15:46
Ciao a tutti :)

Ho un database che dovrebbe gestire un parco auto. In questo database, ci sono diverse tabelle, tipo:

anagraficaVetture - assicurazioni - rifornimentiMese - scadenze - riparazioni...

tutte queste tabelle hanno in comune un campo di tipo intero che si chiama:

id_vettura.

Nelle tabelle come rifornimentiMese, scadenze, riparazioni, è presente un altro campo per l'identificazione del mese nel quale si inseriscono i dati.

Quello che mi viene chiesto, è di tirar fuori un listato che mi raggruppi tutti questi dati in un'unica visuale di questo tipo:



//abbrevio per sintetizzare
modello | targa | importoAssicurazione | totaleRifornimenti | totaleScadenze
-------------------------------------------------------------------------
fiat 111 1.000,00 560.00 459.00
seat



Mi dareste qualche dritta?

grazie :)

RaouL.

cionci
22-02-2008, 19:42
Scusa...e che ci sarebbe di complicato ? Si tratta di fare qualche group by id_vettore ed applicare la funzione di aggregazione Sum.

RaouL_BennetH
29-02-2008, 13:27
Ciao :)

Allora, per semplificare un pò le cose mi sono creato delle viste su alcune tabelle in modo da avere già il raggruppamento di alcuni dati. Quello che succede però quando vado ad effettuare la query complessiva, è che ottengo una marea di doppioni.

La query è questa:


SELECT vetture.appartenenza, vetture.modello, vetture.targa,
assicurazioni.importo, totalManutenzioniMese.totaleman,
totalRifornimentiMese.TotaleEuro, totalScadenzeMeseNew.totalscad
from vetture, assicurazioni, totalManutenzioniMese, totalRifornimentiMese, totalScadenzeMeseNew
where vetture.id_vet = totalManutenzioniMese.id_vet
and vetture.id_vet = assicurazioni.id_vet
and vetture.id_vet = totalRifornimentiMese.id_vet
and vetture.id_vet = totalScadenzeMeseNew.id_vet
group by totalManutenzioniMese.id_mese, totalRifornimentiMese.id_mese, totalScadenzeMeseNew.id_mese


Succede che mi trovo ogni riga replicata due o più volte.

Grazie :)

RaouL.

wisher
29-02-2008, 13:30
prova con SELECT DISTINCT...

RaouL_BennetH
29-02-2008, 13:34
prova con SELECT DISTINCT...

nulla, nel senso che non ho doppioni ma mi mancano una marea di risultati.

C'è qualcosa proprio nella logica che sto cercando di applicare che è totalmente sbagliata.

cionci
29-02-2008, 14:30
SELECT A.vettura_id, A.targa, A.modello, SommaAssicurazione, SomamScadenze, SommaRifornimenti FROM
(SELECT vetture.vettura_id, SUM(importo) AS SommaAssicurazione FROM vetture JOIN assicurazioni ON vetture.vettura_id = assicurazioni.vettura_id GROUP BY vetture.vettura_id) AS A
JOIN (SELECT vetture.vettura_id, SUM(importo) AS SommaScadenze FROM vetture JOIN scadenze ON vetture.vettura_id = scadenze.vettura_id GROUP BY vetture.vettura_id) AS B ON A.vettura_id = B.vettura_id
JOIN (SELECT vetture.vettura_id, SUM(importo) AS SommaRifornimenti FROM vetture JOIN rifornimenti ON vetture.vettura_id = rifornimenti.vettura_id GROUP BY vetture.vettura_id) AS C ON A.vettura_id = C.vettura_id;

RaouL_BennetH
29-02-2008, 15:39
SELECT A.vettura_id, A.targa, A.modello, SommaAssicurazione, SomamScadenze, SommaRifornimenti FROM
(SELECT vetture.vettura_id, SUM(importo) AS SommaAssicurazione FROM vetture JOIN assicurazioni ON vetture.vettura_id = assicurazioni.vettura_id GROUP BY vetture.vettura_id) AS A
JOIN (SELECT vetture.vettura_id, SUM(importo) AS SommaScadenze FROM vetture JOIN scadenze ON vetture.vettura_id = scadenze.vettura_id GROUP BY vetture.vettura_id) AS B ON A.vettura_id = B.vettura_id
JOIN (SELECT vetture.vettura_id, SUM(importo) AS SommaRifornimenti FROM vetture JOIN rifornimenti ON vetture.vettura_id = rifornimenti.vettura_id GROUP BY vetture.vettura_id) AS C ON A.vettura_id = C.vettura_id;

e meno male che era banale :D

Grazie mille :) Ora provo!

cionci
29-02-2008, 15:51
E che c'è di difficile ? Sono 3 sotto query in cui si raggruppa e si fa la somma...e dopo si fa il JOIN delle sottoquery...

maxithron
29-02-2008, 19:01
E che c'è di difficile ? Sono 3 sotto query in cui si raggruppa e si fa la somma...e dopo si fa il JOIN delle sottoquery...

pesantemente OT:

un grosso saluto cionci :)

Sono ospite di 'raoullino' ora ci penserò io a lui :D

cionci
29-02-2008, 19:04
Ma ciao !!!

So che Raul è in buone mani :D
Passa più spesso da queste parti ;)