сортировка по значению в другой таблице php mysql - PullRequest
2 голосов
/ 08 мая 2011

У меня есть две таблицы, одна называется эпизодами, а другая - счетом.Таблица эпизодов имеет следующие столбцы:

id |номер |название |описание |введите

Таблица результатов содержит следующие столбцы:

id |userId |showId |оценка

Идея состоит в том, что пользователи будут оценивать шоу.Каждый раз, когда пользователь оценивает шоу, в таблице результатов создается новая строка (или обновляется, если она уже существует).Когда я перечисляю шоу, я усредняю ​​все оценки для этого идентификатора шоу и отображаю его рядом с названием шоу.

Что мне нужно сделать, это отсортировать шоу на основе их среднего рейтинга.Я смотрел на присоединение к столам, но на самом деле не понял этого.

Спасибо

Ответы [ 3 ]

2 голосов
/ 08 мая 2011

Чтобы упорядочить результаты, используйте и ORDER BY предложение.Вы можете упорядочить по сгенерированным столбцам, таким как результат статистической функции, такой как AVG.

SELECT e.title, AVG(s.score) AS avg_score
  FROM episodes AS e
    LEFT JOIN scores AS s ON e.id=s.showId
  GROUP BY e.id
  ORDER BY avg_score DESC;
0 голосов
/ 08 мая 2011
SELECT episodes.*, AVG(score.score) as AverageRating FROM episodes
INNER JOIN score ON (episodes.id = score.showId)
GROUP BY episodes.id
ORDER BY AVG(score.score) DESC
0 голосов
/ 08 мая 2011

Ты прав.Вы должны присоединиться к этим таблицам, а затем использовать GROUP BY в столбце id таблицы episodes.Тогда вы сможете использовать функцию AVG () в столбце «Score» таблицы «Scores».

SELECT AVG(scores.score) FROM episodes LEFT JOIN scores ON scores.showId = episodes.id GROUP BY episodes.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...