Fórum Erro na SUM com GROUP BY e duas tabelas #406380
10/08/2011
0
Tenho duas tabelas, caminhao e abatecimentos com a seguintes estrutura:
Estou querendo criar um relatório, nele preciso dos Km Rodados, da Média gasta de combustivel e dos valores pagos pelos abastecimentos, estou usando a seguinte QUERY SQL:
o que está acontecendo é que os valores pagos, ValorNF está retornando corretamente, os demais estão errados, estão retornando resultados diferentes dos correos, valores muito superiores. Como posso resolver isso? Alguem tem alguma idéia?
CREATE TABLE IF NOT EXISTS `abastecimentos` ( `Id` int(255) NOT NULL auto_increment, `IdPlaca` int(255) NOT NULL, `IdMotorista` int(255) NOT NULL, `Data` date NOT NULL, `IdPosto` int(255) NOT NULL, `ValorNF` decimal(10,2) NOT NULL, `QtDiesel` decimal(10,2) NOT NULL, `KmFinal` int(255) NOT NULL, `Trancar` int(1) NOT NULL, PRIMARY KEY (`Id`), KEY `IdPosto` (`IdPosto`), KEY `IdPlaca` (`IdPlaca`), KEY `IdMotorista` (`IdMotorista`), KEY `KmFinal` (`KmFinal`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=934 ;
CREATE TABLE IF NOT EXISTS `caminhao` ( `Id` int(255) NOT NULL auto_increment, `Placa` varchar(8) NOT NULL, `IdTipoCaminhao` int(255) NOT NULL, `Ano` int(4) NOT NULL, `Km` int(255) NOT NULL, `IdMarca` int(100) NOT NULL, `IdModelo` int(255) NOT NULL, `Chassis` varchar(100) NOT NULL, `Propriedade` int(1) NOT NULL, `Trancar` int(1) NOT NULL, `Inativo` int(1) NOT NULL, PRIMARY KEY (`Id`), KEY `IdModelo` (`IdModelo`), KEY `IdMarca` (`IdMarca`), KEY `IdTipoCaminhao` (`IdTipoCaminhao`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=98 ;
Estou querendo criar um relatório, nele preciso dos Km Rodados, da Média gasta de combustivel e dos valores pagos pelos abastecimentos, estou usando a seguinte QUERY SQL:
SELECT `caminhao`.`Id`, @dv := `abastecimentos`.`IdPlaca`, @dt := `abastecimentos`.`KmFinal` , @dx := IFNULL( ( SELECT `KmFinal` AS 'G' FROM `abastecimentos` WHERE `KmFinal` < @dt AND `IdPlaca` = @dv ORDER BY `KmFinal` DESC LIMIT 0 , 1 ), `caminhao`.`Km` ) AS 'KmInicial', SUM( `abastecimentos`.`KmFinal` - @dx ) AS 'Km', SUM( `abastecimentos`.`KmFinal` - @dx ) / `abastecimentos`.`QtDiesel` AS `Media` , SUM( `abastecimentos`.`ValorNF` ) AS 'ValorNF' FROM `abastecimentos` , `caminhao` WHERE `abastecimentos`.`IdPlaca` = `caminhao`.`Id` GROUP BY `caminhao`.`Id`
o que está acontecendo é que os valores pagos, ValorNF está retornando corretamente, os demais estão errados, estão retornando resultados diferentes dos correos, valores muito superiores. Como posso resolver isso? Alguem tem alguma idéia?
Fernando Prado
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)