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

forma mas sana de obtener ultima foto.

Estas en el tema de forma mas sana de obtener ultima foto. en el foro de Mysql en Foros del Web. hola amigos, estoy usando mysql y la estructura de mis tablas es la siguientes usuarios.id, usuarios.nombre fotos.id, fotos.id_usuario cual les parece que seria la forma ...
  #1 (permalink)  
Antiguo 09/12/2008, 17:54
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
forma mas sana de obtener ultima foto.

hola amigos,
estoy usando mysql y la estructura de mis tablas es la siguientes

usuarios.id, usuarios.nombre
fotos.id, fotos.id_usuario

cual les parece que seria la forma mas adecuada de obtener la ultima foto de cada usuario?

SELECT usuarios.id, usuarios.nombre, MAX(fotos.id) as ultima
FROM usuarios
LEFT OUTER JOIN fotos.id_usuario = usuarios.id
GROUP BY usuarios.id
ORDER BY usuarios.id

me parecece que el MAX() está haciendo que mi consulta se ejecute muy lentamente..
muchas gracias por vuestra ayduda, saludos para todos!!
__________________
On error no hago nada porque deje de fumar...
  #2 (permalink)  
Antiguo 10/12/2008, 01:55
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: forma mas sana de obtener ultima foto.

Cita:
Iniciado por dieguicho Ver Mensaje
hola amigos,
estoy usando mysql y la estructura de mis tablas es la siguientes

usuarios.id, usuarios.nombre
fotos.id, fotos.id_usuario

cual les parece que seria la forma mas adecuada de obtener la ultima foto de cada usuario?

SELECT usuarios.id, usuarios.nombre, MAX(fotos.id) as ultima
FROM usuarios
LEFT OUTER JOIN fotos.id_usuario = usuarios.id
GROUP BY usuarios.id
ORDER BY usuarios.id

me parecece que el MAX() está haciendo que mi consulta se ejecute muy lentamente..
muchas gracias por vuestra ayduda, saludos para todos!!
Prueba esto. No lo he probado, aunque si funciona creo que será más rápido.
Código sql:
Ver original
  1. SELECT usuarios.id, usuarios.nombre, IFNULL(t1.ultima, 'no tiene fotos') AS fotoultima FROM usuarios LEFT JOIN (SELECT fotos.id_usuario usuario, MAX(fotos.id) ultima FROM fotos GROUP BY fotos.id_usuario)t1 ON usuarios.id = t1.usuario

No obstante, quizás no te vendría mal incluir un campo más para la fecha en que se incluyó la foto.
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 22:54.