В моей базе данных есть 4 таблицы:
пользователи
images
user_follow
комментарии
Я пытаюсь сделать запрос, чтобы получить все мои фотографии и фотографии моих друзей 1) строка должна отображаться только в том случае, если у пользователя есть изображение в таблице «images» 2) только изображение от меня и моих друзей (в зависимости от «user_follow»)таблица) 3) количество комментариев для каждого изображения
мой запрос:
SELECT u.username as user, i.image as user_image, p.image, UNIX_TIMESTAMP(p.date) as date, COALESCE ( imgcount.cnt, 0 ) as comments
FROM users u
LEFT JOIN user_follow f ON u.id = f.follow_id
LEFT JOIN images p ON p.user_id = u.id
LEFT JOIN images i ON i.id = (SELECT b.id FROM images AS b where p.user_id = b.user_id ORDER BY b.id DESC LIMIT 1)
LEFT JOIN (SELECT image_id, COUNT(*) as cnt FROM commentaries GROUP BY image_id ) imgcount ON p.id = imgcount.image_id
WHERE f.user_id = 3 OR p.user_id = 3
ORDER BY p.date DESC
Количество комментариев для каждой строки sql изображения работает нормально в этом запросе
LEFT JOIN (SELECT image_id, COUNT(*) as cnt FROM commentaries GROUP BY image_id ) imgcount ON p.id = imgcount.image_id
в этой строке я пытаюсь получить от пользователя последнее загруженное изображение в виде аватара из таблицы "images"
LEFT JOIN images i ON i.id = (SELECT b.id FROM images AS b where p.user_id = b.user_id ORDER BY b.id DESC LIMIT 1)
Этот запрос не дает правильного результата, поскольку показывает моих друзей, у которых нет фотографийи что-тоне хорошо с моими собственными фотографиями (в базе данных у меня есть 2 строки с моим user_id: 3), но sql возвращает 4