PDA

View Full Version : [MySQL] Colonna calcolata su due JOIN


andybiancoblu
08-11-2016, 11:16
Salve a tutti, spero di essere il più chiaro possibile per il problema che ho riscontrato in una SELECT che dovrei correggere.

Ho un DB MySQL pr un'azienda che produce tessuti, un applicativo PHP si occupa di inserire nel DB il peso di ogni rotolo di tessuto prodotto a cui vengono associate differenti percentuali di materia prima utilizzata (filato)

La pagina relativa al magazzino filati (materia prima) deve calcolare le rimanenze di filati.

Ho tre tabelle: 1 filati(dove c'è un colonna calcolata in base alle join con le alttre due tabelle); 2 pezze_filati (dove viene registrata ogni rotolo o pezza numerata con ID del filato utilizzato e relativa percentuale); 3 packing_list (dove vengono registrati tutti i rotoli o pezze con numero e kg)

La select è la seguente:

SELECT A. * , A.kg_init - ( SUM( C.kg_pezza ) * B.perc_fil - SUM( C.kg_pezza ) * A.perc_calo ) AS kg_mag FROM filati AS A LEFT JOIN pezze_filati AS B ON A.ID_filato = B.ID_filato LEFT JOIN packing_list AS C ON B.n_pezza = C.n_pezza GROUP BY A.ID_filato

Spero qualcuno possa aiutarmi a trovare l'errore nella colonna calcolata perchè hanno riscontrato delle discrepanze nel magazzino piuttosto elevate.

Grazie in anticipo

les2
08-11-2016, 11:23
si ma sei certo che il carico/scarico dei pesi a magazzino sia reale? scarti?
perchè lo scarto su molte operazioni diventa un numero consisente, peggio poi se il magazziniere a volte si dimentica di fare l'operazione.

sono già smarcati questi aspetti?

vittorio130881
08-11-2016, 13:51
Salve a tutti, spero di essere il più chiaro possibile per il problema che ho riscontrato in una SELECT che dovrei correggere.

Ho un DB MySQL pr un'azienda che produce tessuti, un applicativo PHP si occupa di inserire nel DB il peso di ogni rotolo di tessuto prodotto a cui vengono associate differenti percentuali di materia prima utilizzata (filato)

La pagina relativa al magazzino filati (materia prima) deve calcolare le rimanenze di filati.

Ho tre tabelle: 1 filati(dove c'è un colonna calcolata in base alle join con le alttre due tabelle); 2 pezze_filati (dove viene registrata ogni rotolo o pezza numerata con ID del filato utilizzato e relativa percentuale); 3 packing_list (dove vengono registrati tutti i rotoli o pezze con numero e kg)

La select è la seguente:

SELECT A. * , A.kg_init - ( SUM( C.kg_pezza ) * B.perc_fil - SUM( C.kg_pezza ) * A.perc_calo ) AS kg_mag FROM filati AS A LEFT JOIN pezze_filati AS B ON A.ID_filato = B.ID_filato LEFT JOIN packing_list AS C ON B.n_pezza = C.n_pezza GROUP BY A.ID_filato

Spero qualcuno possa aiutarmi a trovare l'errore nella colonna calcolata perchè hanno riscontrato delle discrepanze nel magazzino piuttosto elevate.

Grazie in anticipo

SELECT A. * , A.kg_init - ( SUM( C.kg_pezza ) * B.perc_fil - SUM( C.kg_pezza ) * A.perc_calo ) AS kg_mag FROM filati AS A LEFT JOIN pezze_filati AS B ON A.ID_filato = B.ID_filato LEFT JOIN packing_list AS C ON B.n_pezza = C.n_pezza GROUP BY A.ID_filato


non mi piace a.* che poi non cè nel group by quindi toglilo e poi come fai a sottrarre a A.kg_init una funzione di aggregazione? o fai sum (A.kg_init) - sum( blablabla) o lo fai per righe e quindi senza group by. secondo me cosi duplica i reocord