sql >> Base de Datos >  >> RDS >> Mysql

SQL Últimas fotos de contactos (agrupadas por contacto)

A veces, la única forma de lograr un fin es crear una pieza de SQL tan fea y atroz, que la alternativa de hacer múltiples consultas se vuelve atractiva :-)

Solo haría una consulta para obtener una lista de sus amigos y luego, para cada amigo, obtendría las tres fotos más recientes. Algo como:

friend_list = sqlexec "select user2_id from relations where user1_id = "
                      + current_user_id
photolist = []
for friend in friend_list:
    photolist += sqlexec "select user_id, id, date_uploaded from photos"
                 + " where user_id = "
                 + friend.get("user2_id")
                 + " order by date_uploaded desc fetch first 3 rows only"

# Now do something with photolist

No tienes para hacerlo como una consulta más de lo que está limitado a una expresión regular para hacer coincidir un patrón atroz. Claro que sería bueno ser "inteligente", pero rara vez es necesario. Prefiero un enfoque pragmático.