@vladflip
me

Сложный select в mysql с тремя таблицами?

Есть таблицы: (упрощенные)

------------------------
feedbacks
------------------------
id text
1 Good
2 Awful

------------------------
feedbacks_likes
------------------------
feedback_id user_id
1 1
1 2
2 1
2 2
------------------------
feedbacks_dislikes
------------------------
feedback_id user_id
1 1

Есть таблица юзеров (не нуждается в описании) и таблица отзывов(feedbacks). У каждого отзыва есть лайки и дизлайки. Таблица лайков(feedbacks_likes) и дизлайков(feedbacks_dislikes) выполнены в отношении многие ко многим между таблицей users и таблицей feedback. Система аналогична оценке видео в youtube.

Запрос:
Нужно выбрать все фидбеки и отсортировать их по лайкам и дизлайкам.

Буду благодарен ответам в виде sql кода, laravel php кода или псевдокода.
  • Вопрос задан
  • 305 просмотров
Решения вопроса 1
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
select text, (select count(*) from feedbacks_likes where feedback_id = feedbacks.id) as likes, (select count(*) from feedbacks_dislikes where feedback_id = feedbacks.id) as dislikes from feedbacks

Легкий селект, только структура базы глупая.
В идеале хранить готовое число лайков и дислайков, чтобы не считать каждый раз.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы