Wszystko to jest jednym zapytaniem

domyślam się że używają czegoś co się nazywa złączeniami kilku tabel (z angielskiego JOIN) np ja do pokazania znajomych używam takiego zapytania ( podzapytaniem pobieram też w nim ilość znajomych tego znajomego, pierwsze zdjęcie lub avatar jeśli istnieje inne dane typu login, miasto itd.):
$query = "SELECT friends.*, students.login, students.student_id, photos.thumb_name, avatars.avatar_name,
(SELECT COUNT(f.friend_id)
FROM module_Dates_friends AS f
WHERE (f.recipient_id = friends.recipient_id AND f.sender_id = friends.sender_id OR f.recipient_id = friends.sender_id AND f.sender_id = friends.recipient_id) AND f.accepted=1) AS friends_num
FROM module_Dates_friends AS friends
LEFT JOIN module_Uniwerki_students AS students ON ( students.student_id = friends.sender_id AND friends.sender_id != $student_id) OR (students.student_id = friends.recipient_id AND friends.recipient_id != $student_id)
LEFT JOIN module_Dates_photos AS photos ON ( photos.student_id = friends.sender_id AND friends.sender_id != $student_id) OR (photos.student_id = friends.recipient_id AND friends.recipient_id != $student_id)
LEFT JOIN module_Dates_avatars AS avatars ON ( avatars.student_id = friends.sender_id AND friends.sender_id != $student_id) OR (avatars.student_id = friends.recipient_id AND friends.recipient_id != $student_id)
WHERE (friends.recipient_id = $student_id OR friends.sender_id = $student_id) AND friends.accepted=1
GROUP BY friends.friend_id
ORDER by friends.send_date ASC, photos.photo_id ASC";
Wykonanie oddzielnego zapytania każdego znajomego zapchało by im serwer przez zapchanie bazy :/. Na szczęście są złączenia