Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta Dificl

Estas en el tema de Consulta Dificl en el foro de Mysql en Foros del Web. Saludos Amigos del foro, tengo una gran duda alrededor de esta consulta: SELECT tbl_contrato.Cod_contrato, tbl_estado.Cod_estado, tbl_estado.Estado, tbl_estado_contrato.Fecha_cambio_estado FROM tbl_estado_contrato INNER JOIN tbl_estado ON (tbl_estado_contrato.Cod_estado = ...
  #1 (permalink)  
Antiguo 05/11/2007, 15:33
 
Fecha de Ingreso: diciembre-2006
Ubicación: Tunja
Mensajes: 177
Antigüedad: 17 años, 3 meses
Puntos: 2
Consulta Dificl

Saludos Amigos del foro, tengo una gran duda alrededor de esta consulta:

SELECT
tbl_contrato.Cod_contrato,
tbl_estado.Cod_estado,
tbl_estado.Estado,
tbl_estado_contrato.Fecha_cambio_estado
FROM
tbl_estado_contrato
INNER JOIN tbl_estado ON (tbl_estado_contrato.Cod_estado = tbl_estado.Cod_estado)
INNER JOIN tbl_contrato ON (tbl_estado_contrato.Cod_contrato = tbl_contrato.Cod_contrato)
WHERE
(tbl_contrato.Cod_contrato = 22)
GROUP BY
tbl_contrato.Cod_contrato
ORDER BY
tbl_estado_contrato.Fecha_cambio_estado DESC

La cuestión es que en la tabla estado se almacenan todos los estados y la fecha de cambio de estado de un contrato. Necesito que me salga el ultimo estado del contrato. Lo estoy intentando ordenando la fecha de cambio de estado, pero a pesar de existir dos registros en la tabla estado con codigo contrato = 22 siempre me muestra el más antiguo y no el más reciente asi:

Muestra:
Contrato = 22, fecha cambio estado = 2/3/2007, estado = vigente

en vez de:

Contrato = 22, fecha cambio estado = 5/11/2007, estado = finalizado


De antemano gracias.
  #2 (permalink)  
Antiguo 06/11/2007, 08:45
Avatar de Laforge  
Fecha de Ingreso: noviembre-2004
Ubicación: Galaxia 34, Cuadrante 972, Área 31
Mensajes: 174
Antigüedad: 19 años, 5 meses
Puntos: 2
Re: Consulta Dificl

yo diría que el problema es que la única condición es que el nº de contrato sea 22 y lo agrupas por el mismo campo..... lógicamente, como te lo agrupa por código de contrato en los campos de fecha_cambio_estado y estado te pone los primeros que encuentra independientemente del ORDER que hayas puesto (ya que esta cláusula solamente te sirve si en el resultado hay más de un registro).

Deberías añadir el campo fecha_cambio_estado en la cláusula GROUP BY. Luego con el ORDER BY fecha_cambio_estado DESC te debería presentar el último cambio de estado como el primer regitro, de ahí sacas el estado y ... voilá...
__________________
Nunca esperes un mejor momento para abrir esa botella de vino...........nunca llega.

No hay vida después de MySQL
  #3 (permalink)  
Antiguo 08/11/2007, 21:23
 
Fecha de Ingreso: diciembre-2006
Ubicación: Tunja
Mensajes: 177
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: Consulta Dificl

Sabe cual es el problema que me repite el estado, me muestra los dos estados.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:10.