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

Форум MySQL

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

 

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

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

тема: Вывод N строк и из таблицы начиная со строки с заданым ID
 
 автор: amigo62   (01.08.2007 в 11:02)   письмо автору
 
 

Подобная выборка производится например в рейтингах: переход по ссылке http://rating.ru/?id=165 инициирует вывод заданного количества ссылок начиная со ссылки с id 165. И вот не возьму в толк: можно это осуществить командами MySQL или нужно выбирать ВСЕ и сортировать функциями РНР? Подскажите пожалуйста, как это обычно делается?

   
 
 автор: Trianon   (01.08.2007 в 11:05)   письмо автору
 
   для: amigo62   (01.08.2007 в 11:02)
 

Строки в таблицах лежат внавал.
Когда Вы говорите, что требуются строки, начиная с id 165, то подразумеваете определенный порядок этих строк. Какой?

   
 
 автор: amigo62   (01.08.2007 в 12:22)   письмо автору
 
   для: Trianon   (01.08.2007 в 11:05)
 

в данном конкретном случае ORDER BY date DESC если Вы об этом

   
 
 автор: Trianon   (01.08.2007 в 12:57)   письмо автору
 
   для: amigo62   (01.08.2007 в 12:22)
 

id и date взаимно монотонны?
Тогда достаточно написать

SELECT * FROM tbl 
WHERE id >= 165
ORDER BY date DESC 
Если нет - тогда сложнее

SELECT * FROM tbl 
WHERE date >= (SELECT date FROM tbl WHERE id=165)
ORDER BY date DESC 

   
 
 автор: amigo62   (01.08.2007 в 13:14)   письмо автору
 
   для: Trianon   (01.08.2007 в 11:05)
 

Да, получается что значение UNIX Timestamp в столбце date возрастает одновременно с auto_increment'ацией id, значит, подойдет первый способ, я думаю... окончательно
<?php
$query
="SELECT * FROM `table` WHERE `id`=<'$id' ORDER BY `date` DESC LIMIT ".$recsperpage;
?>

а вот второй пример пригодится для общего развития, не знал, что можно выполнить запрос в запросе=) большое человеческое спасибо=)

   
 
 автор: amigo62   (01.08.2007 в 13:14)   письмо автору
 
   для: Trianon   (01.08.2007 в 11:05)
 

Да, получается что значение UNIX Timestamp в столбце date возрастает одновременно с auto_increment'ацией id, значит, подойдет первый способ, я думаю... окончательно
<?php
$query
="SELECT * FROM `table` WHERE `id`=<'$id' ORDER BY `date` DESC LIMIT ".$recsperpage;
?>

а вот второй пример пригодится для общего развития, не знал, что можно выполнить запрос в запросе=) большое человеческое спасибо=)

   
 
 автор: oradev   (01.08.2007 в 13:09)   письмо автору
 
   для: amigo62   (01.08.2007 в 11:02)
 

Каков вопрос таков ответ

select t.rn
from (select row_number over (order by id) as rn from table) t
where t.rn >= 165;

Хотите верьте хотите нет, но этот запрос
Выводит строки заведомо упорядоченные по id начинаю со 165 позиции

P.S. Ну все пора на пенсию

   
 
 автор: cheops   (01.08.2007 в 13:48)   письмо автору
 
   для: oradev   (01.08.2007 в 13:09)
 

Хм... именно в MySQL? over не поддерживается MySQL и помоему вообще в стандарт SQL не входит...

   
 
 автор: oradev   (01.08.2007 в 13:57)   письмо автору
 
   для: cheops   (01.08.2007 в 13:48)
 

cheops, ну я в соответствии со своим ником так ответил, уж извиняйте!

   
Rambler's Top100
вверх

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