Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Номер возвращаемой строки
 
 автор: JET_LI   (21.10.2009 в 20:35)   письмо автору
 
 

вообщем так у меня возникла проблема одна...
надо как то узнать номер выдаваемой строки!
к примеру в БД таблица tbl:
id name
===============
05 Hello World
06 Forum
10 News
12 Server
20 PHP
===============

к примеру я сделал запрос SELECT * FROM tbl WHERE id=10
как узнать какая она по последовательности, то есть News идёт 3 по счёту в базе данных...

я не думаю, что кроме "ручных методов" - циклов, нет других - более рациональные, скоростные и менее ресурсоёмкие.

помогите плииз!=)

  Ответить  
 
 автор: Valick   (22.10.2009 в 08:32)   письмо автору
 
   для: JET_LI   (21.10.2009 в 20:35)
 

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

  Ответить  
 
 автор: JET_LI   (22.10.2009 в 13:36)   письмо автору
 
   для: Valick   (22.10.2009 в 08:32)
 

объясняю!+)

нужно узнать номер страницы где будет находиться то или иное сообщение!

вот, например, выдаётся пользователю сообщение определённое нужно узнать на какой страницы оно будет находиться.

вот например само кол-во страниц определяется так:
$count="SELECT COUNT(*) FROM tbl";
$page=ceil($count[0]/15); // То есть 15 сообщений на каждой страницы


а мне надо номер страницы то есть:
$numb // нужно как-то значение задать - порядковый номер сообщения
$ipage=ceil($numb[0]/15); // получился номер страницы


вот и вопрос! как узнать порядковый номер?

  Ответить  
 
 автор: Trianon   (22.10.2009 в 13:42)   письмо автору
 
   для: JET_LI   (22.10.2009 в 13:36)
 

У записей в твблице нет собственного порядка.

Точнее так. Какой-то сиюминутный порядок у них всё же есть, но
а) теория РБД исключаeт порядок как строк так и столбцов таблицы из её субъектов,
б) программист должен считать , что нет даже этого сиюминутного порядка, и при необходимости устанавливать свой - явный.
Если он, конечно, хочет писать надежные программы.

ORDER BY name в ответе cheops'a - это та самая попытка установить явный порядок.

Наверное надо упомянуть, что в других СУБД есть средства отклониться от базы теории, и запросить номер строки в запросе (функция RANK() в MSSQL к примеру) . В MySQL таких средств нет.
Соответственно, в простых случаях потребуется писать запрос вроде
SELECT COUNT(id) FROM tbl WHERE id < $id
В сложных...

  Ответить  
 
 автор: cheops   (22.10.2009 в 12:12)   письмо автору
 
   для: JET_LI   (21.10.2009 в 20:35)
 

Обычно, если важен порядок вывода строк - их сортируют при помощи конструкции ORDER BY
SELECT * FROM tbl
WHERE id=10
ORDER BY name

Иногда даже специально вводя числовое поле, чтобы задать порядок следования строк.

  Ответить  
 
 автор: JET_LI   (26.10.2009 в 18:09)   письмо автору
 
   для: cheops   (22.10.2009 в 12:12)
 

никто меня не понял меня не понял!
сортировать я умею=)
но не буду же я считать какое место занимает запись, если в таблице лежит записей около
1 000 000!

мне нужно это для чего?
для того чтобы узнать какое место пользователь занимает на моём сайте.
вот например SELECT MAX(visits) FROM tbl_vis
то есть пользователь занимает 1 место, потому что имеет самое большое число посещений.
а как узнать следующие места? 2 3 4 5 6 и так далее?

  Ответить  
 
 автор: Valick   (27.10.2009 в 06:59)   письмо автору
 
   для: JET_LI   (26.10.2009 в 18:09)
 

но не буду же я считать какое место занимает запись, если в таблице лежит записей около
1 000 000!

просто добавь воды LIMIT, раз уж умеете сортировать, то будьте любезны и уметь ограничивать результаты выборки

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования