@Farrien
Tell me who

Как узнать порядковый номер записи из выборки из двух таблиц?

Запрос типа
SELECT t1.target_id, SUM(t1.cnt) AS hm, t2.id, t2.name FROM votes AS t1, people AS t2 WHERE t1.target_id=t2.id GROUP BY t2.id ORDER BY hm DESC, t2.name ASC LIMIT 10

Сейчас этот запрос выводит список людей, сортируя их по количеству их "рейтинга" на сайте. Через цикл узнавать их позицию в рейтинге не составляет труда, но очень надо чтоб прям в запросе выводилось в какой-нибудь отдельный столбец, типа position. Для того, чтобы потом в профиле пользователя показывать его место в рейтинге.
Нужно узнать номер каждой записи после того, как они были отсортированы и выведены. Пробовал из гугла это @row:=@row+ 1, но оно выводит какие-то неверные числа. Думаю так происходит из-за GROUP.

LPX1n0R.png
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Надо обернуть запрос ещё в один SELECT
SET @row = 0;
SELECT *, @row := @row + 1 AS `pos`
  FROM (
    SELECT `t1`.`id`, `t1`.`hm`, `t2`.`name`
      FROM (
        SELECT `target_id` AS `id`, SUM(`cnt`) AS `hm`
          FROM `votes`
          GROUP BY `target_id`
      ) AS `t1`
      JOIN `people` AS `t2` ON `t2`.`id` = `t1`.`id`
      ORDER BY `t1`.`hm` DESC, `t2`.`name` ASC 
      LIMIT 10
  ) AS `x`
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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