Ir al contenido


Foto

Obtener ultima fecha por tipo de insumos


  • Por favor identifícate para responder
9 respuestas en este tema

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 13 julio 2016 - 10:05

Amigos estoy teniendo problemas en obtener la última fecha de un insumo utilizado en tablas maestro/detalles: esto es lo que tengo

 

la Tabla Ordenes:

 

ot_id - Integer

ot_fecha - timestamp

veh_id - integer

 

la tabla detalle

 

ot_id - integer

ot_insumo - varchar(150)

insumo_id - integer

insumo_cat - cat

 

lo que necesito conseguir es lo siguiente, obtener la ultima vez que se utilizo ese insumo de un vehiculo especificado en la orden, para obtener la cantidad de dia, semanas, mes o año que ha estado utilizando ese insumo, ejemplo:

 

Orden No. 19 del vehiculo con id 311:

 

ot_insumo                    fecha montaje    fecha actual     diferencia
FILTRO DE AIRE         01/03/2016        13/07/2016        4 (MESES)
FILTRO DE ACEITE    01/01/2016        13/07/2016        6 (MESES)

 

La verdad no me llega como hacerlo.

 


  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 13 julio 2016 - 12:56

: :


  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 13 julio 2016 - 02:20

lo que necesito conseguir es lo siguiente, obtener la ultima vez que se utilizo ese insumo de un vehiculo especificado en la orden, para obtener la cantidad de dia, semanas, mes o año que ha estado utilizando ese insumo, ejemplo:

 

Orden No. 19 del vehiculo con id 311:

 

ot_insumo                    fecha montaje    fecha actual     diferencia
FILTRO DE AIRE         01/03/2016        13/07/2016        4 (MESES)
FILTRO DE ACEITE    01/01/2016        13/07/2016        6 (MESES)

 

La verdad no me llega como hacerlo.

 

Una pregunta, 

 

En la vida real, una persona lleva su vehículo al servicio, ésta persona pide cambio de filtros de aire y aceite y lo que quieres obtener es la ultima vez que lo hizo? o ¿quieres saber las ultimas reparaciones/cambios se hicieron en ese vehículo?

 

Saludos


  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 13 julio 2016 - 02:25

Sí mi estimado.


  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 13 julio 2016 - 02:48

Sí mi estimado.

 

Si cual :D

 

opcion 1) Quieres obtener cual fue la ultima vez que cambio filtro de aceite y de aire

 

opcion 2) Quieres saber todas las reparaciones que se hicieron por ultima vez ?

 

opcion 3) Quieres sabe cual fue la ultima vez que hicieron cambio de cada insumo

 

Saludos


  • 0

#6 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 13 julio 2016 - 02:53

Opcion 3 :D


  • 0

#7 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 13 julio 2016 - 03:43

Así de bote pronto haría ésto

sql
  1. SELECT 
  2. DETALLE.OT_ID,
  3. DETALLE.OT_INSUMO,
  4. ORDENES.OT_FECHA
  5. FROM TABLA_ORDENES ORDENES
  6. JOIN TABLA_DETALLE DETALLE ON DETALLE.OT_ID = ORDENES.OT_ID
  7. ORDER BY 2,3

La pega es que despues tienes que filtrar solo un insumo y hacer el calculo de la diferencia.
 
Saludos
  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 13 julio 2016 - 03:51

La otra opción es hacer un repeat buscado la fecha mas alta por cada insumo.
 
Algo así:
 

delphi
  1. query1.sql.text := 'SELECT DISTINCT OT_INSUMO FROM TABLA_DETALLE';
  2. query1.open;
  3. for idx := 0 to registros do
  4. begin
  5. 'SELECT FIRST 1' +
  6. ' DETALLE.OT_ID, ' +
  7. ' DETALLE.OT_INSUMO, ' +
  8. ' ORDENES.OT_FECHA ' +
  9. 'FROM TABLA_ORDENES ORDENES ' +
  10. 'JOIN TABLA_DETALLE DETALLE ON DETALLE.OT_ID = ORDENES.OT_ID ' +
  11. 'WHERE DETALLE.OT_INSUMO = ' + query1.fieldbyname('ot_insumo').AsString +
  12. 'ORDER BY 2,3 ';
  13. query2.fields......
  14. end;

Saludos
  • 1

#9 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 13 julio 2016 - 05:40

No me devolvió lo que esperaba, pero gracias a tu consulta pude partir de ahí y se me ocurrió que debía incluir la fecha y el id del vehículo en la tabla de detalles y hice la siguiente consulta:


sql
  1. SELECT
  2. DETALLE.OT_ID,
  3. DETALLE.OT_INSUMO,
  4. ORDENES.OT_FECHA,
  5. (SELECT MAX(ot_fecha) FROM ot_preventivo_detalle WHERE ot_vme_id = ordenes.veh_id AND is_id = detalle.is_id AND ot_fecha < detalle.ot_fecha) AS lastdate
  6. FROM ot_preventivo ORDENES
  7. JOIN ot_preventivo_detalle DETALLE ON DETALLE.OT_ID = ORDENES.OT_ID
  8. WHERE ordenes.ot_id = :id AND detalle.ot_renglon = 2
  9. ORDER BY 2,3

Así he podido obtener la última y fecha actual de la orden requerida, ahora bien, eso lo probé con una orden con un sólo insumo, en un rato probaré con dos insumos en fechas diferentes, creo que la consulta podría mejorar, cualquier consejo por favor dejenme saber :).

 

Saludos.


  • 2

#10 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 13 julio 2016 - 05:48

Lo acabo de probar y sí, funciona correctamente, gracias mi estimado amigo Ego.


  • 1




IP.Board spam blocked by CleanTalk.