SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 31.03.2012 21:12:30

Clockgen
Участник
Зарегистрирован: 31.03.2012
Сообщений: 4

не получается создать запрос на поиск позиции в таблице по заданному имени.

Подскажите пожалуйста как это сделать?
Я пытался написать запрос из 3-х "подзапросов",но не получилось,вот мой код:


SELECT * FROM SCORES ORDER BY SCORE DESC;   //сначала я сортирую по очкам
SELECT COUNT(SCORE,NAME) FROM SCORES;       //затем считаю сколько всего записей
SELECT COUNT(SCORE,NAME) POS=IF(NAME='&NAME',.....????,0) <-----вот здесь я не знаю что подставить. Нужно определить позицию по запрашиваемому $NAME из скрипта php. Т.е. если даже нет записи с таким именем то присвоить pos=0 отослать обратно этот 0 либо номер позиции если такое имя существует;
 


Поля с которыми я работаю SCORE,NAME,ID,я не знаю нужно ли создавать поле POS? если count() сможет чем то помочь?
ID (автоматическое ключевое поле с прибавлением номера зарегистрированного человека)
NAME(уникальная строка,нет повторяющихся значений)
SCORE(сюда загружаются очки).
Подскажите пожалуйста кто нибудь уже неделю бьюсь(((

Неактивен

 

#2 31.03.2012 22:53:09

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: не получается создать запрос на поиск позиции в таблице по заданному имени.

Тут уже задавался похожий вопрос http://sqlinfo.ru/forum/viewtopic.php?id=4978

Неактивен

 

#3 01.04.2012 11:05:24

Clockgen
Участник
Зарегистрирован: 31.03.2012
Сообщений: 4

Re: не получается создать запрос на поиск позиции в таблице по заданному имени.

этот метод не подходит,мой запрос скорее всего по проще и поменьше.помогите пожалуйста.

Неактивен

 

#4 02.04.2012 09:32:26

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: не получается создать запрос на поиск позиции в таблице по заданному имени.

Если не подходит — объясните, почему не подходит. Визуально — задачки одинаковые.

Неактивен

 

#5 02.04.2012 23:16:03

Clockgen
Участник
Зарегистрирован: 31.03.2012
Сообщений: 4

Re: не получается создать запрос на поиск позиции в таблице по заданному имени.

ну смотрите,я не пойму что дает в том описании pos=@pos? это промежуточная переменная? или поле? мне не понятно. Задачи идентичные,да я согласен,вот только там запрос идет вывод позиции за дату,это для меня уже взрыв.Вот допустим у меня есть таблица с 36 записями с полями(NAME,ID,SCORES) все имена в таблице разбросаны,т.е. ни на одном поле нет сортировки,и мне нужно вывести число-позицию в таблице поля NAME, которому будет присвоено значение при отсылке имени игрока на сервер.Как я понимаю, мне просто нужно отослать на сервер переменную NAME="Иванов" и mysql должна выполнить запрос,т.е. подсчитать количество всех записей в таблице с сортировкой по очкам "сверху-вниз" и найти в этом промежутке позицию от 0-й до 36,и уже после сортировки где NAME="Иванов" его позиция окажется 11 после сортировки по очкам в таблице. И вот как только такая запись будет найдена в отсортированной таблице, то сервер вернет значение клиенту например position=11.
Логику я рассказал,а вот реализовать я не могу,проблемы с подзапросами.

Неактивен

 

#6 04.04.2012 22:35:48

Clockgen
Участник
Зарегистрирован: 31.03.2012
Сообщений: 4

Re: не получается создать запрос на поиск позиции в таблице по заданному имени.

Уже разобрался и создал запрос на вывод позиции в рейтинге,я ж говорил что мой запрос легче и короче))
Вот запрос:

SET @t:=1, @tk=0;
SELECT MAX( @tk := ((@t := @t +1) *0 + IF( SCORES.NAME = "Serg", @t , 0 ))) AS position FROM SCORES
ORDER BY SCORE DESC

Отредактированно Clockgen (04.04.2012 22:37:02)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson