ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

MySQL, нахождение позиции в таблице
  #1  
Старый 04.11.2007, 17:41
Аватар для NNNS
NNNS
Познающий
Регистрация: 26.05.2007
Сообщений: 63
Провел на форуме:
550386

Репутация: 86
Отправить сообщение для NNNS с помощью ICQ
Question MySQL, нахождение позиции в таблице

Есть таблица в бд
id | count
Нужно найти позицию id в отсортированной по убыванию count таблице. Помогите сформировать запрос
 
Ответить с цитированием

  #2  
Старый 04.11.2007, 19:50
Аватар для Red_Red1
Red_Red1
Участник форума
Регистрация: 12.01.2007
Сообщений: 262
Провел на форуме:
4608122

Репутация: 874
Отправить сообщение для Red_Red1 с помощью ICQ
По умолчанию

Если я тебя правильно понял:
select id from (твоя таблица) where count='коунт id которого ищеш'
Или уточни что тебе нужно.
 
Ответить с цитированием

  #3  
Старый 04.11.2007, 20:39
Аватар для Scipio
Scipio
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме:
5939734

Репутация: 1917


Отправить сообщение для Scipio с помощью ICQ
По умолчанию

Цитата:
Сообщение от Red_Red1  
Если я тебя правильно понял:
select id from (твоя таблица) where count='коунт id которого ищеш'
Или уточни что тебе нужно.
нет скорее ты неправельно понял...

а я понял так, вот запрос:

это отсорировано по убыванию
SELECT count(id) FROM `count` where id>=твой ид

это отсорировано по возрастанию
SELECT count(id) FROM `count` where id<=твой ид
__________________
Карфаген должен быть разрушен...
 
Ответить с цитированием

  #4  
Старый 04.11.2007, 23:06
Аватар для Helios
Helios
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме:
1469995

Репутация: 589
Отправить сообщение для Helios с помощью ICQ
По умолчанию

Код:
SELECT COUNT(`id`) FROM `tbl` WHERE `count` > (SELECT `count` FROM `tbl` WHERE `id` = '12321')
12321 - искомый id

Получишь количество элементов, count которых больше count искомого, т.е. по сути - номер в отсортированной таблице; индексация с 0.
 
Ответить с цитированием

  #5  
Старый 04.11.2007, 23:24
Аватар для Scipio
Scipio
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме:
5939734

Репутация: 1917


Отправить сообщение для Scipio с помощью ICQ
По умолчанию

Цитата:
Сообщение от Helios  
Код:
SELECT COUNT(`id`) FROM `tbl` WHERE `count` > (SELECT `count` FROM `tbl` WHERE `id` = '12321')
12321 - искомый id

Получишь количество элементов, count которых больше count искомого, т.е. по сути - номер в отсортированной таблице; индексация с 0.
да, я сначала не посмотрел, что он дал "структуру" таблицы, просто он еще написал непонятно, вот я и тупанул в конечном итоге я думаю правильным будет вариант Helios`a правдо надо немного подправить его:
SELECT COUNT(`id`) FROM `tbl` WHERE `count` >=(SELECT `count` FROM `tbl` WHERE `id` =твой ид ) order by count desc
__________________
Карфаген должен быть разрушен...

Последний раз редактировалось Scipio; 05.11.2007 в 01:18..
 
Ответить с цитированием

  #6  
Старый 05.11.2007, 00:23
Аватар для ZaCo
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

>>Нужно найти позицию id в отсортированной по убыванию count таблице. Помогите сформировать запрос
наверноеб имелось ввиду:

>>select id from table order by count desc limit n,1

где, n - нужный номер
 
Ответить с цитированием

  #7  
Старый 05.11.2007, 01:26
Аватар для Scipio
Scipio
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме:
5939734

Репутация: 1917


Отправить сообщение для Scipio с помощью ICQ
По умолчанию

Цитата:
Сообщение от ZaCo  
>>Нужно найти позицию id в отсортированной по убыванию count таблице. Помогите сформировать запрос
наверноеб имелось ввиду:

>>select id from table order by count desc limit n,1

где, n - нужный номер
В твоем случае на выходе будет id, а не позиция id, т.к. значения id могут идти не попорядку, т.е. не
I1=1, I2=2....In=In-1+1

но если даже это выполняется, то взяв твой вариант, n- это и есть то число которое нужно найти, а у тебя n нужно вводить вручную (т.е. знать заранее)

Я думаю предложенный Helius`ом и доработанный мной вариант как раз удовлетворяет условию этой "задачи"
__________________
Карфаген должен быть разрушен...

Последний раз редактировалось Scipio; 05.11.2007 в 01:29..
 
Ответить с цитированием

  #8  
Старый 05.11.2007, 01:42
Аватар для ZaCo
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

2Scipio возможно ошибся, я имел ввиду что именно id нужно вывести. но если нужна позиция, тогда в чем вопрос и причем здесь вообще count?) ну, а если по count надо искать, то уже написали)

>>Я думаю предложенный Helius`ом и доработанный мной вариант

только там count вместо id в условии выборки

Последний раз редактировалось ZaCo; 05.11.2007 в 01:56..
 
Ответить с цитированием

  #9  
Старый 05.11.2007, 03:19
Аватар для Helios
Helios
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме:
1469995

Репутация: 589
Отправить сообщение для Helios с помощью ICQ
По умолчанию

Сотрировка
Код:
SELECT COUNT(`id`) FROM `tbl` WHERE `count` >=(SELECT `count` FROM `tbl` WHERE `id` =твой ид ) ORDER BY `count` DESC
там нафик не нужна, т.к. результатом запроса будет не значение какого-то поля, а результат работы встроенной функции COUNT(), которой глубоко безразлично то, в каком порядке идут данные, которые она считает. Только лишняя трата времени, а если записей много - ...

Последний раз редактировалось Helios; 05.11.2007 в 03:21..
 
Ответить с цитированием

  #10  
Старый 05.11.2007, 03:34
Аватар для Scipio
Scipio
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме:
5939734

Репутация: 1917


Отправить сообщение для Scipio с помощью ICQ
По умолчанию

Цитата:
Сообщение от Helios  
Сотрировка
Код:
SELECT COUNT(`id`) FROM `tbl` WHERE `count` >=(SELECT `count` FROM `tbl` WHERE `id` =твой ид ) ORDER BY `count` DESC
там нафик не нужна, т.к. результатом запроса будет не значение какого-то поля, а результат работы встроенной функции COUNT(), которой глубоко безразлично то, в каком порядке идут данные, которые она считает. Только лишняя трата времени, а если записей много - ...
да, ты прав, тогда все дело в >= и <= (т.е. в порядке убывания возрастания соответственно)
__________________
Карфаген должен быть разрушен...
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP, PERL, MySQL, JavaScript 5 28.12.2006 18:26
SQL injection в MySql сервере версии 3,x bandera Чужие Статьи 3 04.06.2006 16:17
Общие Рекомендации Защиты (MySQL и SQL Web-интерфейс) k00p3r Чужие Статьи 0 13.06.2005 11:22
Защищаем MySql. Шаг за шагом k00p3r Чужие Статьи 0 13.06.2005 11:18



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ