Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/01/2014, 11:48
Avatar de skiper0125
skiper0125
 
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 13 años, 6 meses
Puntos: 511
Exclamación Duda en consulta

Buenos días maestros.

La problemática que se me presenta es la siguiente, tengo las siguientes tablas

Código SQL:
Ver original
  1. ordenServicio
  2. +----------------------+-------------+------+-----+---------+----------------+
  3. | FIELD                | TYPE        | NULL | KEY | DEFAULT | Extra          |
  4. +----------------------+-------------+------+-----+---------+----------------+
  5. | id                   | INT(11)     | NO   | PRI | NULL    | AUTO_INCREMENT |
  6. | idVehiculo           | DOUBLE      | YES  |     | NULL    |                |
  7. | estado               | VARCHAR(50) | YES  |     | NULL    |                |
  8. | facturacion          | datetime    | NO   |     | NULL    |                |
  9. +----------------------+-------------+------+-----+---------+----------------+
  10.  
  11. contenidoOrden
  12. +--------------------+--------------+------+-----+---------+----------------+
  13. | FIELD              | TYPE         | NULL | KEY | DEFAULT | Extra          |
  14. +--------------------+--------------+------+-----+---------+----------------+
  15. | id                 | INT(11)      | NO   | PRI | NULL    | AUTO_INCREMENT |
  16. | idOrden            | DOUBLE       | YES  |     | NULL    |                |
  17. | costoFinal         | DOUBLE       | YES  |     | NULL    |                |
  18. | estado             | VARCHAR(90)  | YES  |     | NULL    |                |
  19. +--------------------+--------------+------+-----+---------+----------------+
  20.  
  21. vehiculo
  22. +----------------------+--------------+------+-----+---------+----------------+
  23. | FIELD                | TYPE         | NULL | KEY | DEFAULT | Extra          |
  24. +----------------------+--------------+------+-----+---------+----------------+
  25. | id                   | DOUBLE       | NO   | PRI | NULL    | AUTO_INCREMENT |
  26. | placa                | CHAR(20)     | YES  |     | NULL    |                |
  27. | economico            | CHAR(20)     | YES  |     | NULL    |                |
  28. +----------------------+--------------+------+-----+---------+----------------+

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
  1. ordenServicio
  2. +----------------------+-------------+------------+----------------------+
  3. | id                   | idVehiculo  | estado     | facturacion          |
  4. +----------------------+-------------+------------+----------------------+
  5. | 1                    | 1           | Terminada  | 2013-10-02 16:45:00  |
  6. | 2                    | 1           | Terminada  | 2013-10-18 19:05:00  |
  7. | 3                    | 2           | Terminada  | 2013-12-02 14:19:00  |
  8. | 4                    | 3           | Terminada  | 2013-12-22 23:02:00  |
  9. +----------------------+-------------+------------+----------------------+
  10.  
  11. contenidoOrden
  12.  
  13. +----------------------+-------------+------------+------------+
  14. | id                   | idOrden     | costoFinal | estado     |
  15. +----------------------+-------------+------------+------------+
  16. | 1                    | 1           | 1500       | Terminada  |
  17. | 2                    | 1           | 450        | Terminada  |
  18. | 3                    | 2           | 758        | Terminada  |
  19. | 4                    | 3           | 459        | Terminada  |
  20. | 4                    | 3           | 187        | Terminada  |
  21. | 4                    | 3           | 962        | Terminada  |
  22. | 4                    | 4           | 569        | Terminada  |
  23. | 4                    | 4           | 45         | Terminada  |
  24. +----------------------+-------------+------------+------------+
  25.  
  26. vehiculo
  27. +----------------------+-------------+------------+
  28. | id                   | placa       | economico  |
  29. +----------------------+-------------+------------+
  30. | 1                    | 9999        | 1          |
  31. | 2                    | 8888        | 2          |
  32. | 3                    | 7777        | 3          |
  33. | 4                    | 6666        | 4          |
  34. | 5                    | 5555        | 5          |
  35. | 6                    | 4444        | 6          |
  36. | 7                    | 3333        | 7          |
  37. | 8                    | 2222        | 8          |
  38. +----------------------+-------------+------------+

el query que eh desarrollado es el siguiente:

Código SQL:
Ver original
  1. SELECT tabla1.*, tabla2.*, tabla3.* FROM
  2.     (
  3.         SELECT group_concat(ordenServicio.id) AS sonOrdenes, ordenServicio.idVehiculo FROM ordenServicio WHERE
  4.         DATE(facturacion)>='2013-09-01' AND DATE(facturacion)<='2014-01-01' AND estado='Terminada' GROUP BY idVehiculo
  5.     ) AS tabla1
  6. LEFT OUTER JOIN
  7.     (
  8.         SELECT idOrden, SUM(costoFinal) AS total FROM contenidoOrden WHERE estado='Terminada' GROUP BY idOrden
  9.     ) AS tabla2 ON tabla2.idOrden IN(tabla1.sonOrdenes)
  10.  
  11. LEFT OUTER JOIN
  12.     (
  13.         SELECT id, placa, economico FROM vehiculo
  14.     ) 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
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125