Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL Últimas fotos de contatos (agrupadas por contato)


Às vezes, a única maneira de chegar a um fim é criar um pedaço de SQL tão feio e hediondo, que a alternativa de fazer várias consultas se torna atraente :-)

Eu faria apenas uma consulta para obter uma lista de seus amigos e, para cada amigo, obteria as três fotos mais recentes. 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

Você não tem para fazer isso como uma consulta mais do que você está limitado a uma expressão regular para corresponder a um padrão hediondo. Claro que seria bom ser "inteligente", mas raramente é necessário. Prefiro uma abordagem pragmática.