Buenos días maestros.
La problemática que se me presenta es la siguiente, tengo las siguientes tablas
Código SQL:
Ver originalordenServicio
+----------------------+-------------+------+-----+---------+----------------+
| 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 originalordenServicio
+----------------------+-------------+------------+----------------------+
| 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 originalSELECT 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