[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: MySQL...
MatrixGod
всем прива!

мне надо вытащить из базы 50 записей идущих подряд один за другим (по id).
как-то не хочется писать запрос такого типа:
mysql_query("SELECT * FROM `table` WHERE id = '16' AND id = '17' AND id = '18' AND id = '19' ... AND id = '65'");

ну в общем я думаю понятно. есть ли другой нормальный способ это выполнить?
кстати запрос динамический. тоесть даем ему число а он от этого числа берет 50 записей по id.

всем спасибо...



Спустя 5 минут, 32 секунды (17.07.2010 - 13:08) dr_Lev написал(а):
select * from `table` where id >=16 order by id limit 50
select * from `table` where id between 16 and 65

Спустя 10 минут, 7 секунд (17.07.2010 - 13:18) MatrixGod написал(а):
dr_Lev
спасибо.
а если у меня скажем есть 100 записей в таблице а я начинаю выборку скажем начиная от 70-й. как сделать так что если скрипт дошел до предела (до 100) начнется выборка с первого id? тоесть в этом случае он возьмет от 70 до 100 и от 1 до 20.

мне нужно в любом случае выводить 50 записей.

Спустя 8 минут, 6 секунд (17.07.2010 - 13:26) dr_Lev написал(а):
select * from (
select * from `table` where id >= 70 order by id
union all
select
* from `table` order by id limit 50) t limit 50

Спустя 5 минут, 18 секунд (17.07.2010 - 13:31) MatrixGod написал(а):
dr_Lev
что-то не клеется, как-то не правильно он выдает результаты... sad.gif

Спустя 2 часа, 38 минут, 36 секунд (17.07.2010 - 16:10) MatrixGod написал(а):
может кто знает другой способ?

Спустя 6 минут, 12 секунд (17.07.2010 - 16:16) Basili4 написал(а):
попробуй так я не пробывал
select * from `table` where id (between 70 and 100) and (between 1 and 70)

Спустя 14 минут, 52 секунды (17.07.2010 - 16:31) MatrixGod написал(а):
Basili4
и что? он возьмет все 100...

Спустя 6 минут, 28 секунд (17.07.2010 - 16:38) Basili4 написал(а):
select * from `tabl1` where id between 70 and 100 UNION select * from `tabl1` where id between 1 and 70 вот так выбрал что нужно

Спустя 4 минуты, 2 секунды (17.07.2010 - 16:42) dr_Lev написал(а):
select *, case when id>=70 then 1 else 2 end as param from `table` order by param, id limit 50

Спустя 59 секунд (17.07.2010 - 16:43) MatrixGod написал(а):
Basili4
да но если я в этот же запрос вместо 70 вставлю 30 например, мне надо чтоб он просто взял 50 записей (до 80).
а с таким запросом это не получается...

Спустя 11 минут, 2 секунды (17.07.2010 - 16:54) dr_Lev написал(а):
а ты попробуй... даже если 0 поставишь, последний запрос сработает отлично

Спустя 7 минут, 10 секунд (17.07.2010 - 17:01) MatrixGod написал(а):
dr_Lev
последний твой или Basili4а?

Спустя 3 часа, 56 минут, 58 секунд (17.07.2010 - 20:58) Basili4 написал(а):
MatrixGod
dr_Lev у него в запросе limit стоит я его пост увидел свой править не стал

Спустя 27 минут, 9 секунд (17.07.2010 - 21:25) MatrixGod написал(а):
Basili4, dr_Lev,
спасибо, работает.

теперь если не лень поясните как это произошло.
или что такое "then 1 else 2 end", и что означает запитая после "select *"???

Спустя 25 минут, 56 секунд (17.07.2010 - 21:51) dr_Lev написал(а):
select * - означает выбрать все поля, после запятой идет вычисляемое поле `param`, несуществующее в таблице... значение этого поля вычисляется - 1, если id >= 70, и 2 - если нет... дальше по этому полю стоит сортировка, и в результате получаем строки id = 70,71,...,100,1,2,...,19
Быстрый ответ:

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