Oppure

Loading
29/12/10 18:53
megadeth
Salve ragazzi, ho un db su access che riguarda un autosalone con servizio di noleggio e auto-officina. Ho dei problemi per quanto riguarda il calcolo del prezzo complessivo (costo dei singoli ricambi + la manodopera per il tipo di intervento effettuato) di un dato intervento di riparazione...ecco la struttura del db:

img638.imageshack.us/i/immaginexpv.jpg/

Dato quindi in input l'id della riparazione di cui voglio sapere il prezzo, dovrei fare delle join tra le varie tabelle:

interventi-lavori per sapere il prezzo della manodopera
utilizzi-ricambi per sapere il prezzo dei vari ricambi utilizzati

Alla fine fare una somma tra questi due valori ed ottenere il prezzo complessivo.

Il problema è che devo fare tutto in una singola query e non sò come fare per le join!!!
Qualcuno sà darmi una mano??

Sono riuscito a fare questa query per la join tra le 4 tabelle
SELECT *FROM (((riparazioni AS r INNER JOIN interventi AS i ON r.idRip=i.codRip) 
INNER JOIN lavori AS l ON i.codLavoro=l.idLavoro)
INNER JOIN utilizzi AS u ON r.idRip=u.codRip) 
INNER JOIN ricambi AS c ON u.codRic=c.idRic 
WHERE R.idRip=[Inserisci il codice della riparazione];


L'unico problema (grave) è che se in una riparazione è stato utilizzato un solo ricambio, il risultato della join è un unico record mentre se sono stati utilizzati 2 o più ricambi ottengo il doppio dei record....come posso risolvere??
aaa
29/12/10 21:17
lorenzo
secondo me viene fuori solo un casino tremendo.
Potresti fare uno scriptino in vba, sarebbe la cosa migliore probabilmente....
aaa
30/12/10 10:07
megadeth
Postato originariamente da lorenzo:

secondo me viene fuori solo un casino tremendo.
Potresti fare uno scriptino in vba, sarebbe la cosa migliore probabilmente....

Si purtroppo lo so...è un casino, però devo farlo solo con un'unica query.
Non c'è modo di fare questa operazione utilizzando magari delle query nidificate?
Ultima modifica effettuata da megadeth 30/12/10 11:24
aaa
30/12/10 12:35
lorenzo
posso chiederti perché una sola query?

Se è perché dovrà essere usata da persone "Poco pratiche" allora anche uno script andrebbe benissimo, si può lanciare con un solo click.

Se è per altri motivi, allora....in teoria dovresti fare delle group by sul codice per ottenere i due costi singoli per poi sommarli. Ma per fare le group by devi separare le query. Ne escono fuori almeno 3. Per questo uno script sarebbe ad-hoc. Metti tutto li dentro e lo lanci come se fosse una singola query
aaa
31/12/10 9:34
megadeth
Postato originariamente da lorenzo:

posso chiederti perché una sola query?

Se è perché dovrà essere usata da persone "Poco pratiche" allora anche uno script andrebbe benissimo, si può lanciare con un solo click.

Se è per altri motivi, allora....in teoria dovresti fare delle group by sul codice per ottenere i due costi singoli per poi sommarli. Ma per fare le group by devi separare le query. Ne escono fuori almeno 3. Per questo uno script sarebbe ad-hoc. Metti tutto li dentro e lo lanci come se fosse una singola query


Il motivo è per scopi didattici...alla fine ho risolto con questa query:
SELECT SUM(prz) AS PREZZOTOTALE
FROM (SELECT SUM(prezzo*qt_usata) AS prz
FROM (riparazioni AS r INNER JOIN utilizzi AS u ON r.idRip=u.codRip) 
INNER JOIN ricambi AS c ON u.codRic=c.idRic 
WHERE idRip=[Inserisci l'id della riparazione]

UNION

SELECT SUM(costo_manodopera) AS prz
FROM (riparazioni AS r INNER JOIN interventi AS i ON r.idRip=i.codRip) 
INNER JOIN lavori AS l ON i.codLavoro=l.idLavoro 
WHERE idRip=[Inserisci l'id della riparazione]
);


Buon anno :k:
Ultima modifica effettuata da megadeth 31/12/10 9:35
aaa