Помощь с MySQL Join Statement - PullRequest
1 голос
/ 03 мая 2010

Я только что создал веб-сайт и понял, что мне нужно иметь топ-3 альбомов с самым высоким рейтингом .. Я не встроил что-то, что отслеживает рейтинги. Рейтинги хранятся отдельно. Может кто-нибудь показать мне, как их собрать, пожалуйста.

ВЫБЕРИТЕ идентификатор, имя ИЗ альбомов LIMIT 3

ВЫБРАТЬ рейтинг ИЗ оценок, ГДЕ url = CONCAT ('album / show /', album.id)

Позвольте мне немного прояснить это. Мне нужно вернуть следующее:

Из таблицы альбомов. идентификатор, имя. Из таблицы рейтингов мне нужно вернуть средний рейтинг. КРУГЛЫЙ ((рейтинг + рейтинг + рейтинг) / всего рейтингов)

Рейтинги. Пользователи могут оценивать все на моем сайте, поэтому у меня есть общая таблица оценок. Рейтинг сохраняется вместе с URL страницы, к которой он относится. Следовательно, для получения рейтинга альбомов мне нужно иметь «album / show / {album_id}». В заднем плане у меня должно было быть поле типа и идентификатора, но сейчас немного поздно с неизбежным обедом.

Любая помощь очень ценится.

1 Ответ

2 голосов
/ 03 мая 2010
SELECT
  a.id,
  a.name,
  AVG(r.rating) AS average
FROM
    albums a
  LEFT JOIN
    ratings r
  ON
    r.url = CONCAT('albums/show/', a.id)
GROUP BY
  a.id
ORDER BY
  average DESC
LIMIT 3

(не проверено, см. AVG())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...