IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   mysql запрос (http://www.imho.ws/showthread.php?t=129309)

Viroman 08.02.2008 17:27

mysql запрос
 
Возник у меня тут махонький вопросец, а точнее два, в связи с тем, насколько позволяет следующее.
И так база данных, которая выдаёт столько строк, сколько там находятся на тот момент. Далее есть поля с в одном столбике, где хранятся типа названия городов, предположим. Теперь я хотел бы запрос такой послать, чтобы были выбраны те строки, где скажем так, название города начинается на букву В или А, или А и М и Д, итд.
Далее мне надо подсчитывать строки, он это делает прекрасно, но теперь подсчитав строки в одном запросе мне необходимо теперь повторить этот же самый запрос, но при этом с указанием выдать строку предположим, от 1000 до 2000, вот как на примере пожалуйста такие запросы выглядят, если таковое имеется. Неохота лазить в кодах разбираться, как там реализовано, может у вас быстрее узнаю. Заранее спасибо.

добавлено через 5 минут
ПС> добавлено, пожалуйста не путать с алфавитным порядком АСЦ, мне не нужны все строки, а только те, где есть такие то буквы. Спасибо.

добавлено через 23 минуты
Кажется в первом случае я понял,
select * from mydatabase WHERE goroda LIKE 'A%'
или
select * from mydatabase WHERE goroda LIKE 'B%'
или
select * from mydatabase WHERE goroda LIKE 'B%' and LIKE 'A%'
по второму по моему надо использовать LIMIT первый параметр начало второй конец, вроде бы так, если кто может помочь, исправьте, дополните, помогите.

Псих 08.02.2008 17:50

Цитата:

Сообщение от Viroman (Сообщение 1520005)
от 1000 до 2000,

ну а в чем проблема? дополни условие своего запроса условием where id >= 1000 and id <= 2000

Ясное дело, что интовый идентификатор должен существовать.

Hubbitus 08.02.2008 18:21

Цитата:

Сообщение от Viroman (Сообщение 1520005)
select * from mydatabase WHERE goroda LIKE 'B%' and LIKE 'A%'

обычно можно написать:
select * from mydatabase WHERE goroda LIKE '[AB]%'

В зависимости от сравнения (collation) возможнопонадобится учесть регистр букв, если с маленьких тодже нужны то так: LIKE '[ABab]%'

Кстати вообще оно не верное у Вас, по-вервых должно быть:
select * from mydatabase WHERE goroda LIKE 'B%' and goroda LIKE 'A%'
в таком случае запрос не выдаст ошибку, но и не вернет ни одной строки - ну в самом деле, вы можете показать слово, которое одновременно начинается и на А и на Б??

В каком "первом случае и в тором" в упор не понял, никаких номеров вопросов не видел.


Цитата:

Сообщение от Viroman (Сообщение 1520005)
Далее мне надо подсчитывать строки, он это делает прекрасно, но теперь подсчитав строки в одном запросе мне необходимо теперь повторить этот же самый запрос, но при этом с указанием выдать строку предположим, от 1000 до 2000

Чего-то я не понял. Там же имена городов были!?? 1000 и 2000 это что??

Укажиет вообще с какой СУБД работаем, и приведите конкретнее структуру таблицы. Ну и вопросы не мешало бы поточнее сформулировать.

Viroman 11.02.2008 18:01

Цитата:

select * from mydatabase WHERE goroda LIKE 'B%' and goroda LIKE 'A%'
в таком случае запрос не выдаст ошибку, но и не вернет ни одной строки - ну в самом деле, вы можете показать слово, которое одновременно начинается и на А и на Б??
Да именно, это я по спешке, спасибо за подправку, насчёт того тоже правы, только я своим мышлением, показать все города где те начинаются на А и начинаются на Б, а как понимаете, я это по своему сказал, потому здесь наверное оператор or вставить, или а или б.
Насчёт второго, псих верно просёк, но его предложение несовершенно, я не собираюсь ещё и отдельным строкам нумерацию в столбике присваивать, это динамическая, затрахаюсь в скрипте пересортировывать.
Ну в общем, я и сам во всём разобрался.

"select * from mydatabase WHERE goroda LIKE 'А%' or goroda LIKE 'B%' LIMIT 15, 2";
Предположим в этом запросе, он выбирает все города, где есть в начале буква А или B, а также возвращает только лимитированное количестве строк, где первый указатель, это начало строки, второй смещение, то есть показать две строки начиная с 15.


Часовой пояс GMT +4, время: 03:09.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.