Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

MySQL likes count

. Ученик (170), на голосовании 2 года назад
Здравствуйте у меня есть
Pictures
Id, posted_uid, url, time
И
Likes
Id, liked_user, post_id, time
И мне надо посчитать количество лайков на каждую запись

id 1, posted_uid 1, url img.jpg, time 31.12.2022, likes 99
id 2, posted_uid 2, url img2.jpg, time 31.12.2022, likes 99
Таким образом

На данный момент использую такую

SELECT likes.id, likes.pic_id, likes.user_id AS liked_uid, pictures.user_id AS pic_post_uid, pictures.photo_url, users.full_name, users.avatar, likes.time FROM likes JOIN pictures ON likes.pic_id = pictures.id JOIN users ON likes.user_id = users.id WHERE pictures.user_id = 1 AND DATE_ADD(likes.time, INTERVAL 30 DAY) > now() AND NOT likes.user_id = 1 ORDER BY likes.id DESC LIMIT 10
Голосование за лучший ответ
Александр Искусственный Интеллект (301635) 2 года назад
ваш запрос, если он работает, выведет только информацию по "записям", для которых лайки были...

а чё вы так зациклились на этом конкретном юзере и этой конкретной картинке?
если вам нужно количество лайков за запись, то зачем вы делаете выборку прочей информации ? вы не можете одним запросом вытянуть и количество и информацию о том кто лайкал....

вытаскивать нужно из Pictures
и делать left join с Likes
и забыть про выборку информации о том кто лайкал...
информацию об авторе картинки (о выдающем себя за автора картинки) можете оставить...
.Ученик (170) 2 года назад
Да. Сейчас у меня выводится например
Лайки за неделю
Адам Адамов pic_id 1 like 1
Иван Иванов pic_id 2 like 1

А мне нужен результат типа
Pic_id 1 likes 99
Pic_id 2 likes 99
Всё а не каждый запись которую лайкают
.Ученик (170) 2 года назад
И работает прекрасно
.Ученик (170) 2 года назад
Сейчас устал немного если что вечером сам решу
.Ученик (170) 2 года назад
А вы редактировали.
Понял буду пробовать.
Информация про человек надо было по этому вывел
Спасибо
Похожие вопросы