@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
  • Вопрос задан
  • 50 просмотров
Решения вопроса 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`
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
BojackHorseman
@BojackHorseman
...в творческом отпуске...
как гугл подсказал, так правильно. только чтобы правильно было до конца, нужно перед select в той же транзакции сделать

SET @row = 0;

т.е. инициализировать локальную переменную в текущей сессии
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Badoo Development Москва
от 140 000 до 180 000 руб.
Badoo Development Москва
от 180 000 до 250 000 руб.
Zaymigo Нижний Новгород
До 35 000 руб.
21 авг. 2018, в 16:11
1500 руб./за проект
21 авг. 2018, в 15:45
4000 руб./за проект
21 авг. 2018, в 15:42
2500 руб./за проект