Czasami jedynym sposobem na osiągnięcie celu jest stworzenie fragmentu SQL tak brzydkiego i ohydnego, że alternatywa wykonywania wielu zapytań staje się atrakcyjna :-)
Zrobiłbym tylko jedno zapytanie, aby uzyskać listę twoich znajomych, a następnie, dla każdego przyjaciela, zdobądź trzy najnowsze zdjęcia. Coś takiego:
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
Nie masz nie zrobić to jako jedno zapytanie bardziej niż jesteś ograniczony do jednego wyrażenia regularnego do dopasowania haniebnego wzorca. Jasne, fajnie byłoby być „sprytnym”, ale rzadko jest to konieczne. Wolę podejście pragmatyczne.