Ver Mensaje Individual
  #6 (permalink)  
Antiguo 23/04/2013, 00:57
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta MYSQL

No es tan fácil, amigos, al menos tal y como yo lo he entendido. La idea es que si en la tabla Estado hay datos, tome de ella el último para cada usuario, y si no lo hay, que tome el que tiene de partida en la tabla Usuario.
No he probado esto, pero es la idea:
En la subconsulta me traigo el último estado para cada usuario, y lo hago ordenando por id_usuario y descendente por id, y luego agrupando por id_usuario. Luego mediante una unión con LEFT JOIN me traigo todos los Usuarios y con IFNULL hago que cuando no haya dato en nuevo_estado para ese usuario, me devuelva el u.Estado de partida.

Código MySQL:
Ver original
  1.    u.Nombre,
  2.    u.Apellido,
  3.    IFNULL(t1.nuevo_estado, u.Estado) estado
  4.  FROM Usuario u
  5.    LEFT JOIN
  6.     (SELECT
  7.        id,
  8.        id_usuario,
  9.        nuevo_estado
  10.      FROM Estado
  11.         ORDER BY
  12.             id_usuario,
  13.             id DESC
  14.         GROUP BY id_usuario)t1
  15.      ON u.id = t1.id_usuario

Última edición por jurena; 23/04/2013 a las 03:41