[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: запрос
nasferatu
подскажите запрос выбора слудеющей записи после указанной



Спустя 17 минут, 24 секунды (19.03.2009 - 19:01) Sylex написал(а):
SQL
SELECT * FROM tbl_name WHERE id>_YOUR_ID_ LIMIT 1

?

Спустя 1 минута, 8 секунд (19.03.2009 - 19:02) nasferatu написал(а):
Sylex, спасибо

Спустя 2 часа, 25 минут, 42 секунды (19.03.2009 - 21:28) nasferatu написал(а):
а можно еще задать проверку, если запись последняя, то вернутся к первой???

Спустя 11 минут, 12 секунд (19.03.2009 - 21:39) Viking написал(а):
SQL
select * from $table where id>if((select count(*) from $table where id>$id)>0,$id,0) limit 1;

Спустя 26 минут, 52 секунды (19.03.2009 - 22:06) nasferatu написал(а):
отлично, работает.
Это мой пока самый сложный запрос smile.gif

PHP
SELECT photo.id_category, photo.photo, photo.id, category.category FROM photo INNER JOIN category ON photo.id_category=category.id WHERE photo.id_category='$id_category' and photo.id>if((SELECT COUNT(*) FROM photo WHERE id_album='$id_category' and id>'$photo_id')>0, $photo_id, 0

Спустя 4 минуты, 56 секунд (19.03.2009 - 22:11) lawbreaker написал(а):
та он же блин длинный (0,5) километра smile.gif

Спустя 2 минуты, 5 секунд (19.03.2009 - 22:13) kirik написал(а):
nasferatu, лучше сразу форматируй запросы по-понятнее, чтобы разобраться можно было что где smile.gif Типа:
PHP
SELECT  `p`.`id_category`,
        `p`.`photo`,
        `p`.`id`,
        `c`.`category`
    FROM `photo` AS `p`
    INNER JOIN `category` AS `c` ON `p`.`id_category` = `c`.`id`
        WHERE `p`.`id_category` = '{$id_category}'
        AND `p`.`id` > IF((SELECT COUNT(*) FROM `photo` WHERE `id_album` = '{$id_category}' AND `id` > '{$photo_id}') > 0, {$photo_id}, 0)


UPD. я бы не стал делать вложенный запрос. При большом количестве данных и обращений, это будет "тупое" место в запросе.

Спустя 4 минуты, 21 секунда (19.03.2009 - 22:18) nasferatu написал(а):
kirik, так его лучше разбить на два запроса????

Спустя 45 минут, 4 секунды (19.03.2009 - 23:03) kirik написал(а):
Насколько я понял, ты пишешь галерею картинок?

Цитата (nasferatu @ 19.03.2009 - 10:44)
запрос выбора слудеющей записи после указанной

Это нужно чтобы вытащить следующую картинку после текущей, а определение следующего айдишника, чтобы после просмотра последней фотки юзер уходил на первую, так?

Тогда лучше смотреть, если большой запрос не вернул ничего, то значит мы подошли к концу альбома, и тогда перебрасываем юзера на первую фотку из альбома.

Если бы в этом запросе
SQL
SELECT COUNT(*) FROM `photo` WHERE `id_album` = '{$id_category}' AND `id` > '{$photo_id}') > 0

не было условий, то тогда он выполнялся бы быстро.

Спустя 16 минут, 10 секунд (19.03.2009 - 23:19) nasferatu написал(а):
но избавиться от условия в запросе можно, я так полагаю, только так, один запрос с переходом на следующую запись, потом ее проверить, если ничего не вернул запрос, то новым запросом вытащить первую картинку.

Спустя 7 часов, 35 минут, 53 секунды (20.03.2009 - 06:55) kirik написал(а):
угумс.

Спустя 4 часа, 44 минуты, 27 секунд (20.03.2009 - 11:39) nasferatu написал(а):
так даже и разумней будет

Спустя 7 часов, 1 минута, 44 секунды (20.03.2009 - 18:41) nasferatu написал(а):
А возможно еще посчитать сразу и кол-во фоток???

Спустя 1 час, 25 минут, 29 секунд (20.03.2009 - 20:06) kirik написал(а):
nasferatu, количество фоток должно записываться в отдельное поле в таблице альбомов, чтобы не пересчитывать при каждом запросе.

Спустя 1 час, 51 минута, 15 секунд (20.03.2009 - 21:58) nasferatu написал(а):
я, примерно, так и думал.
Но не могу понять, как вывести какая фотка по счету в альбоме.

Спустя 43 минуты, 48 секунд (20.03.2009 - 22:41) kirik написал(а):
Можно попробовать обойтись LIMIT-ом. Типа LIMIT 1,2 выведет текущую фотку и следующую за ней, итд. Можно подумать и сделать, чтобы выводилась еще и предыдущая smile.gif

Спустя 17 минут, 35 секунд (20.03.2009 - 22:59) nasferatu написал(а):
kirik, уже сделал предыдущую, загвоздка в том, что нужно вывести запись, типа - 1 фото из 5, только не знаю, куда счетчик всунуть

Спустя 15 минут, 49 секунд (20.03.2009 - 23:15) kirik написал(а):
nasferatu, если ты знаешь какая по счету фотка сейчас выводится (а ты это знаешь если используешь LIMIT), и ты знаешь общее количество фоток из альбома. Где трудность вывода "1 фото из Х"?

Спустя 10 минут, 39 секунд (20.03.2009 - 23:25) nasferatu написал(а):
kirik, я не совсем понимаю тебя, или еще не совсем понимаю структуру запроса. Лимитом я вытягиваю одно фото и все данные об фото. Как я узнаю, какая она по счету, только если айди смотреть, но в таблице у меня много фоток с разных альбомов, айди не подходит.

Спустя 32 минуты, 3 секунды (20.03.2009 - 23:57) kirik написал(а):
Цитата (kirik @ 20.03.2009 - 14:41)
Можно попробовать обойтись LIMIT-ом. Типа LIMIT 1,2 выведет текущую фотку и следующую за ней, итд. Можно подумать и сделать, чтобы выводилась еще и предыдущая smile.gif

Тоесть чтобы достать первую фотку и вторую запрос будет таким -
SQL
SELECT ... FROM `table` WHERE `album_id` = 'X' ORDER BY `date_add` LIMIT 1, 2

вторую фотку и третью фотки - ...LIMIT 2,2. Тоесть первое число - порядковый номер фотки в альбоме (который собственно нам и нужен).

Спустя 28 минут (21.03.2009 - 00:25) nasferatu написал(а):
аа, я не сразу понял. Это вариант, но надо будет менять почти все запросы

Спустя 14 минут, 9 секунд (21.03.2009 - 00:40) kirik написал(а):
Цитата (nasferatu @ 20.03.2009 - 16:25)
но надо будет менять почти все запросы

тогда пока не нужно менять.. Лучше подумать хорошенько, чтобы потом опять не переделывать.

Спустя 4 минуты, 4 секунды (21.03.2009 - 00:44) nasferatu написал(а):
пока ничего в голову не лезет. Утро вечера мудренее, может на свежую голову придет чего-нибудь
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.