Mysql
 sql >> Database >  >> RDS >> Mysql

SQL Ultime foto dai contatti (raggruppate per contatto)

A volte, l'unico modo per raggiungere un fine è creare un pezzo di SQL così brutto e atroce, che l'alternativa di fare più query diventa attraente :-)

Vorrei solo fare una query per ottenere un elenco dei tuoi amici, quindi, per ogni amico, ottenere le tre foto più recenti. Qualcosa come:

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

Non avete per farlo come una query non più di quanto sei limitato a un'espressione regolare per la corrispondenza di un modello atroce. Certo sarebbe bello essere "intelligenti", ma raramente è necessario. Preferisco un approccio pragmatico.