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

Necesito pulir una cosulta. Restringir resultados. Es facil. No me sale...

Estas en el tema de Necesito pulir una cosulta. Restringir resultados. Es facil. No me sale... en el foro de Mysql en Foros del Web. Holas. Estoy haciendo un sistema de fotolog y tengo una consulta para recuperar las 5 ultimas fotos cargadas por amigos & favoritos. Utilizo dos tablas ...
  #1 (permalink)  
Antiguo 23/06/2008, 09:22
Avatar de nixspatin  
Fecha de Ingreso: mayo-2008
Mensajes: 113
Antigüedad: 16 años
Puntos: 0
Necesito pulir una cosulta. Restringir resultados. Es facil. No me sale...

Holas. Estoy haciendo un sistema de fotolog y tengo una consulta para recuperar las 5 ultimas fotos cargadas por amigos & favoritos. Utilizo dos tablas para ello, una que se llama amigos_favoritos y otra que se llama pic(fotos).

Esta es la consulta:

select id_pic,amigo_user from pics,amigos_favoritos where amigos_favoritos.id='9' and amigo_id=pics.id order by fecha_pic desc limit 5

Osea, recupero las id_pic (id de la foto) solo si el usuario actual(id) lo tiene como favorito (migos_favoritos.id='9') y recupero su foto (amigo_id=pics.id); por ultimo lo ordeno por fecha descendente (order by fecha_pic desc limit 5).

Para el que sabe como funciona fotolog seguro que vio la falla. Lo que me sucede es que si un usuario postea dos fotos seguidas puede aparecer dos veces la imagen en los favoritos del usuario actual.

Lo que necesito es limitar a que tome SOLO una foto por usuario, y no se como.

Me ayudan?
  #2 (permalink)  
Antiguo 23/06/2008, 10:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Necesito pulir una cosulta. Restringir resultados. Es facil. No me sale...

selecciona MAX(campofecha), agrupa por usuario GROUP BY, ordena por campofecha y limita a 5.
No lo he probado, pero creo que funcionará.
  #3 (permalink)  
Antiguo 23/06/2008, 11:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Necesito pulir una cosulta. Restringir resultados. Es facil. No me sale...

Es así?

Código:
select id_pic,
          amigo_user 
from pics, amigos_favoritos 
where amigos_favoritos.id='9' 
and amigos_favoritos.amigo_id=pics.id 
order by fecha_pic desc limit 5
si es asi yo prefiero esta sintaxis

Código:
select id_pic,
          amigo_user 
from pics inner join amigos_favoritos 
on amigos_favoritos.amigo_id=pics.id 
where amigos_favoritos.id='9' 
order by fecha_pic desc limit 5
No se si he acabado de entender la estructura que usas

Pero....

Código:
Select pics.id as idamigo, 
                      max(id_pic) as idfoto, 
                      max(fecha_pic) as fecha_foto
from pics 
group by pics.id
Esto nos daria el id del amigo, de la foto y la fecha de la ultima foto los amigos que han colgado una foto, en definitiva obtenemos la ultima foto de cada amigo, creo luego

Código:
select fotos.idfoto,
          amigos_favoritos.amigo_user 
from (Select pics.id as idamigo, 
                      max(id_pic) as idfoto, 
                      max(fecha_pic) as fecha_foto
         from pics 
         group by pics.id) as fotos
  inner join amigos_favoritos 
         on amigos_favoritos.amigo_id=fotos.idamigo 
where amigos_favoritos.id='9' 
order by fotos.fecha_foto desc limit 5
substituimos la tabla pics por la subconsulta y listos... creo

Dime si ha funcionado

Quim

Nota: jurena siempre respondemos al mismo tiempo, seguimos sin contradecirnos!!!

Última edición por quimfv; 24/06/2008 a las 04:46 Razón: Al leer a jurena
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 01:25.