Выберите количество голосов для каждого объекта и самых популярных объектов - PullRequest
0 голосов
/ 03 декабря 2010

У меня есть две таблицы:

ГОЛОСОВАНИЕ с полями pk:id, fk:uid, date и ПРЕДСТАВЛЕНИЕ с полями pk:id, ....

Таблицы имеют отношение 1 к 1 в полях uid <-id. Как я могу теперь запросить: </p>

  • список объектов вместе с их оценкой
  • список 10 объектов с самым высоким рейтингом, упорядоченных по счету?

1 Ответ

1 голос
/ 03 декабря 2010
    SELECT s.*,
           COUNT(*) AS cnt
      FROM SUBMISSION s
INNER JOIN VOTE v ON s.id = v.uid
  GROUP BY s.id
  ORDER BY cnt DESC
     LIMIT 10

Без предложений ORDER BY и GROUP BY вы просто получите все предложения с подсчетом голосов.

Но я настоятельно рекомендую создать поле votes_count в таблице SUBMISSION и сохранить его с помощью триггера / кода для хранения там предварительно рассчитанного количества голосов.

...