Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL Dernières photos des contacts (regroupées par contact)

Parfois, la seule façon d'arriver à une fin est de créer un morceau de SQL si laid et odieux, que l'alternative de faire plusieurs requêtes devient attrayante :-)

Je ferais juste une requête pour obtenir une liste de vos amis puis, pour chaque ami, obtenir les trois photos les plus récentes. Quelque chose comme :

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

Vous n'avez pas pour le faire en une seule requête, pas plus que vous n'êtes limité à une expression régulière pour faire correspondre un modèle odieux. Bien sûr, ce serait bien d'être "intelligent", mais c'est rarement nécessaire. Je préfère une approche pragmatique.