La problemática que se me presenta es la siguiente, tengo las siguientes tablas
Código SQL:
Ver original
ordenServicio +----------------------+-------------+------+-----+---------+----------------+ | FIELD | TYPE | NULL | KEY | DEFAULT | Extra | +----------------------+-------------+------+-----+---------+----------------+ | id | INT(11) | NO | PRI | NULL | AUTO_INCREMENT | | idVehiculo | DOUBLE | YES | | NULL | | | estado | VARCHAR(50) | YES | | NULL | | | facturacion | datetime | NO | | NULL | | +----------------------+-------------+------+-----+---------+----------------+ contenidoOrden +--------------------+--------------+------+-----+---------+----------------+ | FIELD | TYPE | NULL | KEY | DEFAULT | Extra | +--------------------+--------------+------+-----+---------+----------------+ | id | INT(11) | NO | PRI | NULL | AUTO_INCREMENT | | idOrden | DOUBLE | YES | | NULL | | | costoFinal | DOUBLE | YES | | NULL | | | estado | VARCHAR(90) | YES | | NULL | | +--------------------+--------------+------+-----+---------+----------------+ vehiculo +----------------------+--------------+------+-----+---------+----------------+ | FIELD | TYPE | NULL | KEY | DEFAULT | Extra | +----------------------+--------------+------+-----+---------+----------------+ | id | DOUBLE | NO | PRI | NULL | AUTO_INCREMENT | | placa | CHAR(20) | YES | | NULL | | | economico | CHAR(20) | YES | | NULL | | +----------------------+--------------+------+-----+---------+----------------+
el resultado que deseo obtener esta planteado de la siguiente manera: mediante un formulario obtendré un rango de fechas, con las cuales deseo obtener la suma total de los gastos por vehículo ordenados de forma desc. Los datos dependen en base al id de la tabla ordenServicio, ya que a partir de ella se debe sumar la columna de contenidoOrden.costoFinal
un ejemplo de los datos es el siguiente
Código SQL:
Ver original
ordenServicio +----------------------+-------------+------------+----------------------+ | id | idVehiculo | estado | facturacion | +----------------------+-------------+------------+----------------------+ | 1 | 1 | Terminada | 2013-10-02 16:45:00 | | 2 | 1 | Terminada | 2013-10-18 19:05:00 | | 3 | 2 | Terminada | 2013-12-02 14:19:00 | | 4 | 3 | Terminada | 2013-12-22 23:02:00 | +----------------------+-------------+------------+----------------------+ contenidoOrden +----------------------+-------------+------------+------------+ | id | idOrden | costoFinal | estado | +----------------------+-------------+------------+------------+ | 1 | 1 | 1500 | Terminada | | 2 | 1 | 450 | Terminada | | 3 | 2 | 758 | Terminada | | 4 | 3 | 459 | Terminada | | 4 | 3 | 187 | Terminada | | 4 | 3 | 962 | Terminada | | 4 | 4 | 569 | Terminada | | 4 | 4 | 45 | Terminada | +----------------------+-------------+------------+------------+ vehiculo +----------------------+-------------+------------+ | id | placa | economico | +----------------------+-------------+------------+ | 1 | 9999 | 1 | | 2 | 8888 | 2 | | 3 | 7777 | 3 | | 4 | 6666 | 4 | | 5 | 5555 | 5 | | 6 | 4444 | 6 | | 7 | 3333 | 7 | | 8 | 2222 | 8 | +----------------------+-------------+------------+
el query que eh desarrollado es el siguiente:
Código SQL:
Ver original
SELECT tabla1.*, tabla2.*, tabla3.* FROM ( SELECT group_concat(ordenServicio.id) AS sonOrdenes, ordenServicio.idVehiculo FROM ordenServicio WHERE DATE(facturacion)>='2013-09-01' AND DATE(facturacion)<='2014-01-01' AND estado='Terminada' GROUP BY idVehiculo ) AS tabla1 LEFT OUTER JOIN ( SELECT idOrden, SUM(costoFinal) AS total FROM contenidoOrden WHERE estado='Terminada' GROUP BY idOrden ) AS tabla2 ON tabla2.idOrden IN(tabla1.sonOrdenes) LEFT OUTER JOIN ( SELECT id, placa, economico FROM vehiculo ) AS tabla3 ON tabla3.id=tabla1.idVehiculo ORDER BY tabla2.total DESC
pero no pude lograr el resultado deseado, alguien podría ayudarme, muchas gracias por su ayuda.
Saludos