Đôi khi, cách duy nhất để đạt được kết thúc là tạo ra một đoạn SQL quá xấu xí và tồi tệ, đến mức việc thay thế thực hiện nhiều truy vấn trở nên hấp dẫn :-)
Tôi chỉ thực hiện một truy vấn để lấy danh sách bạn bè của bạn, sau đó, đối với mỗi người bạn, lấy ba bức ảnh gần đây nhất. Một cái gì đó như:
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
Bạn không có để thực hiện nó dưới dạng một truy vấn hơn là bạn bị giới hạn ở một biểu thức chính quy để đối sánh với một mẫu phức tạp. Chắc chắn sẽ rất tuyệt nếu bạn "thông minh" nhưng nó hiếm khi cần thiết. Tôi thích cách tiếp cận thực dụng hơn.