Soms is de enige manier om een doel te bereiken het maken van een stukje SQL dat zo lelijk en gruwelijk is, dat het alternatief van meerdere zoekopdrachten aantrekkelijk wordt :-)
Ik zou slechts één zoekopdracht doen om een lijst van uw vrienden te krijgen en vervolgens voor elke vriend de drie meest recente foto's krijgen. Iets als:
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
Je hebt geen hebt om het als één query te doen, ben je beperkt tot één reguliere expressie voor het matchen van een gruwelijk patroon. Natuurlijk zou het leuk zijn om "slim" te zijn, maar het is zelden nodig. Ik geef de voorkeur aan een pragmatische benadering.