2015-06-06 4 views
0

У меня есть адаптированные запрос я нашел, чтобы выбрать ранг магазинов, основанные на поле точек:MySQL выбрать ранг на основе поля точек

SELECT *, 
IF (@score=ui.points, @rank:[email protected], @rank:[email protected]+1) rank, 
@score:=ui.points score 
FROM stores ui, 
(SELECT @score:=0, @rank:=0) r 
ORDER BY points DESC 

Как я могу изменить этот запрос, чтобы выбрать ранг индивида хранить, например где stores.id = 2

Во-вторых, магазины принадлежат владельцу, у владельца может быть много магазинов.

Магазины:

id, name, points, owner_id 

Владельцы:

id, name 

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

ответ

0

Вы бы этого не сделали. Для индивидуальной оценки просто вычислите ранг, используя SQL без переменных. Потому что вы делаете «row_number()» количество стилей (где Дубликат значения получают разные ранги), то запрос:

select count(*) 
from stores s cross join 
    (select s.* from stores s where s.id = 2) s2 
where s.points > s2.points or (s.points = s2.points and s.id >= s2.id); 
+0

Вы потеряли меня это - просто возвращает 1? – rpiz

+0

Это должно возвращать количество магазинов с более высоким счетом, чем 'id = 2'. –

Смежные вопросы