Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/05/2008, 11:15
clavijo83
 
Fecha de Ingreso: abril-2008
Mensajes: 40
Antigüedad: 16 años
Puntos: 0
Ayuda Con Un Query

la consulta es la siguiente, necesito mostrar la cedula del conductor, nombre, apellido, las extras diurnas laboradas, las nocturnas y dominicales, ademas mostrar lo que se gana por hacer los viajes y el total a pagar.

las tablas que tengo en mi bd son las siguientes:

TABLE `reporte` (
`codigo_reporte` varchar(90) NOT NULL default '',
`fecha` date NOT NULL,
`codigo_equipo` varchar(20) NOT NULL default '',
`codigo_usuario` varchar(20) NOT NULL default '',
`codigo_obra` varchar(50) NOT NULL default '',
PRIMARY KEY (`codigo_reporte`),
KEY `FK_codigo_equipo` (`codigo_equipo`),
KEY `FK_codigo_obra` (`codigo_obra`),
KEY `FK_detalle_reporte` (`codigo_usuario`)
) ;

TABLE `equipos` (
`codigo_equipo` varchar(20) NOT NULL default '',
`marca_equipo` varchar(30) NOT NULL default '',
`nombre_equipo` varchar(80) NOT NULL default '',
`codigo_tipo_equipo` varchar(20) NOT NULL default '',
`modelo` varchar(20) NOT NULL default '',
`serie` varchar(20) NOT NULL default '',
`capacidad` varchar(20) NOT NULL default '',
`ano` decimal(4,0) NOT NULL default '0',
`valor_hora_viaje` double(7,0) NOT NULL default '0',
PRIMARY KEY (`codigo_equipo`),
KEY `FK_equipos` (`codigo_tipo_equipo`)
);

TABLE `tipo_equipos` (
`codigo_tipo_equipo` decimal(20,0) NOT NULL,
`modotrabajo` varchar(10) NOT NULL,
`nombre_tipo_equipo` varchar(50) NOT NULL default '',
PRIMARY KEY (`codigo_tipo_equipo`)
);

TABLE `remisiones` (
`cod_remision` varchar(10) NOT NULL,
`codigo_reporte` varchar(90) NOT NULL,
`codigo_usuario` varchar(30) NOT NULL,
`placa` varchar(30) NOT NULL,
`cod_ruta` varchar(100) NOT NULL,
`nombre_ruta` varchar(100) NOT NULL,
`valor_viaje` double(10,2) NOT NULL,
`cod_material` varchar(10) NOT NULL,
`material` varchar(25) NOT NULL,
`cantidad` double(5,2) NOT NULL,
`valor_material` double(10,2) NOT NULL,
`precio_transporte` double(10,2) NOT NULL,
`total` double(10,2) NOT NULL,
PRIMARY KEY (`cod_remision`)
) ;

TABLE `operadores` (
`CODIGO_OPERADOR` varchar(20) NOT NULL default '',
`NOMBRE_OPERADOR` varchar(50) NOT NULL default '',
`APELLIDO_OPERADOR` varchar(50) NOT NULL default '',
`cargo` varchar(50) NOT NULL default '',
`salario` double(8,2) NOT NULL default '0.00',
`DIRECCION` varchar(25) default NULL,
`TELEFONO` decimal(10,0) default NULL,
`codigo_tipo_usuario` varchar(20) NOT NULL default '',
PRIMARY KEY (`CODIGO_OPERADOR`)
) ;

TABLE `detalle_operador` (
`codigo_reporte` varchar(90) NOT NULL default '',
`codigo_usuario` varchar(20) NOT NULL default '',
`laboradas` double(10,2) NOT NULL,
`llegada` time NOT NULL,
`salida` time NOT NULL,
`extras_diurnas` double(10,2) NOT NULL,
`nocturnas` double(10,2) NOT NULL,
`domingos` double(10,2) NOT NULL,
`viajes` decimal(10,0) NOT NULL,
`precio` decimal(10,2) NOT NULL,
KEY `FK_detalle_operador` (`codigo_reporte`),
KEY `FK_usuario` (`codigo_usuario`)
) ;

y el query que use es este:

Select CODIGO_OPERADOR AS CO,NOMBRE_OPERADOR AS NOP,APELLIDO_OPERADOR AS AO, sum(extras_diurnas) ed,(sum(extras_diurnas)*((salario/240)*(1.25)))as valor_ed,sum(nocturnas) n,((sum(nocturnas)*((salario/240)*(1.75)))+(sum(nocturnas)*((salario/240)*(0.35))))as valor_en,sum(domingos)as d,(sum(domingos)*((salario/240)*(1.75)))as valor_edo, sum(rem.valor_viaje) v,((sum(extras_diurnas)*((salario/240)*(1.25)))+(sum(domingos)*((salario/240)*(1.75)))+(((sum(nocturnas))*((salario/240)*(1.75)))+((sum(nocturnas))*((salario/240)*(0.35))))+sum(rem.valor_viaje)) as total From OPERADORES as O,remisiones as rem, detalle_operador as DOP, reporte as r, equipos as e, tipo_equipos as te Where r.codigo_usuario = dop.codigo_usuario And dop.codigo_usuario = o.CODIGO_OPERADOR and r.codigo_reporte=dop.codigo_reporte and e.codigo_equipo=r.codigo_equipo and te.codigo_tipo_equipo=e.codigo_tipo_equipo and r.fecha BETWEEN '2008-05-01' and '2008-05-31' and dop.codigo_usuario=rem.codigo_usuario group by DOP.codigo_usuario asc;


el problema esta en que me muestra triplicados el valor de las horas extas y de los viajes y no he sabido como resolver ese problema, quisiera que me ayudaran como solucionarlo y hacer el query correctamente