Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL Neueste Fotos von Kontakten (nach Kontakt gruppiert)

Manchmal ist der einzige Weg, um ein Ende zu erreichen, ein Stück SQL zu erstellen, das so hässlich und abscheulich ist, dass die Alternative, mehrere Abfragen durchzuführen, attraktiv wird :-)

Ich würde nur eine Abfrage durchführen, um eine Liste Ihrer Freunde zu erhalten, und dann für jeden Freund die drei neuesten Fotos erhalten. Etwas wie:

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

Sie haben nicht um es als eine Abfrage zu tun, genauso wenig wie Sie auf einen regulären Ausdruck beschränkt sind, um ein abscheuliches Muster zu finden. Sicher wäre es schön, "clever" zu sein, aber es ist selten notwendig. Ich bevorzuge einen pragmatischen Ansatz.