PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

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:
 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

Fernando Prado

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar