4 таблицы соединения и нахождения среднего столбца

0

У меня 4 таблицы, как это

  • Пользователь [id, имя,.....]
  • Ресторан [id, имя,.....]
  • Обзор [restaurant_id, user_id]
  • Вопрос [id, review_id, оценка]

    логика приложения => для каждого ресторана люди могут дать обзор, в обзоре есть несколько вопросов, вопросы будут всегда same-, как, как был вкус, доставка и т.д. люди дали бы оценку по этим вопросам.

на словах, пользователи дают отзывы о ресторанах по некоторым вопросам

Теперь в своем веб-приложении я хочу показать там список ресторанов со своим "Question table score average".

Я использую laravel. Помогло бы также создание запросов на запрос. Я хотел бы иметь вычисленное поле как среднее значение с данными общих ресторанов.

  • 0
    Вам нужен запрос в SQL или Eloquent?
  • 0
    любой мог бы помочь на самом деле
Показать ещё 1 комментарий
Теги:
join

1 ответ

0

Вам не нужно ничего, кроме стандартного INNER JOIN из этих четырех таблиц:

SELECT rs.name, avg(qt.score) 
  FROM Restaurant rs 
  JOIN Review rv ( rv.restaurant_id = rs.id )
  JOIN User ur ( ur.id = rv.user_id )
  JOIN Question qt ON ( qt.review_id = rv.id )
 GROUP BY rs.name 
 ORDER BY avg(qt.score) desc, rs.name;

Теорию можно объяснить следующим образом:

  • все отзывы организованы для ресторанов

  • мы обеспокоены пользователями, которые находятся в отзывах о ресторанах

  • все отзывы содержат в себе вопросы.

  • 0
    хорошо, я пробую это. почему вышеупомянутый запрос должен работать ?? Можете ли вы объяснить теорию множеств или что-нибудь, что входит в SQL
  • 0
    Без группы им даёт только первый ресторан
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню