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

Consulta MYSQL

Estas en el tema de Consulta MYSQL en el foro de Mysql en Foros del Web. Hola, tengo una duda de cómo hacer una consulta en MySQL. Tengo que hacer una consulta en las 2 tablas que detallo acá abajo. El ...
  #1 (permalink)  
Antiguo 22/04/2013, 18:34
 
Fecha de Ingreso: febrero-2011
Mensajes: 12
Antigüedad: 13 años, 2 meses
Puntos: 0
Consulta MYSQL

Hola, tengo una duda de cómo hacer una consulta en MySQL.

Tengo que hacer una consulta en las 2 tablas que detallo acá abajo.



El resultado que me tendría que dar es el nombre, apellido de la tabla Usuario y el estado que compruebe en si en la tabla estado hay un nuevo estado para el id del usuario, si hay un nuevo estado que muestre el ultimo.

La consulta seria sobre todos los usuarios, seria así el resultado final.



Muchas gracias por lo que puedan aportar.

Saludos.
  #2 (permalink)  
Antiguo 22/04/2013, 18:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta MYSQL

Pues con lo que tienes, la solución es más que de cajón. La tienes a la vista y a menos que jamás hayas escrito una consulta con JOIN no se entiende tu problema.
De hecho, es una consulta que puedes ver en cualquier tutorial elemental que haya sobre el uso de JOIN...
¿Qué problema te causa?

Postea lo que intentaste.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 22/04/2013, 19:26
 
Fecha de Ingreso: febrero-2011
Mensajes: 12
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Consulta MYSQL

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Pues con lo que tienes, la solución es más que de cajón. La tienes a la vista y a menos que jamás hayas escrito una consulta con JOIN no se entiende tu problema.
De hecho, es una consulta que puedes ver en cualquier tutorial elemental que haya sobre el uso de JOIN...
¿Qué problema te causa?

Postea lo que intentaste.
Amigo, voy a leer mas la función JOIN, no me da ningún error, es que no la se hacer.
No se como hacer para que me de el ultimo registro para el id_usuario.

Gracias.
  #4 (permalink)  
Antiguo 22/04/2013, 19:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta MYSQL

Empieza por postar lo que intentaste, como te dije...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 22/04/2013, 21:58
 
Fecha de Ingreso: febrero-2011
Mensajes: 12
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Consulta MYSQL

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Empieza por postar lo que intentaste, como te dije...
Me bloquie, no logro comprenderla.
Quizás sea muy simple pero de verdad no logro comprenderla.

No pego la consulta aca porque no logro comprender como hacerla.

Gracias igual.
  #6 (permalink)  
Antiguo 23/04/2013, 00:57
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
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

Etiquetas: sql, tabla
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 19:49.