![]() |
|
Модераторы: skyboy |
![]()
|
|
| BlackHawk |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 15.8.2003 Репутация: нет Всего: нет |
Подскажите, как осуществить запрос по заданному интервалу
Допустим, имеется некая таблица table_01, из которой необходимо выбрать записи, ID которых равны, например от 15 до 45 (т.е. с 15 по 45 строку в таблице). Интервалы для запроса, при этом передаются из формы из двух разных элементов <input type=text> в переменных $ID_1 и $ID_2 |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
Select ..... where id between 15 and 45
|
|||
|
||||
| BlackHawk |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 15.8.2003 Репутация: нет Всего: нет |
Чтож, очень хорошо. А если немного усложнить задачу?
Например, у нас имеется таблица people, в которой имеются некоторые записи: ------------------------------------------------------- ID Name Age Job ------------------------------------------------------- 1 Алекс 23 дизайнер 2 Ника 25 модельер 3 Сэм 31 менеджер 4 Макс 28 юрист ------------------------------------------------------- также имеется форма, из которой подается запрос на поиск по имени (Name), возрасту (Age) и профессии (Job), который будет выглядеть примерно так: SELECT * FROM people WHERE Name LIKE '%$name%' and ....... and Job LIKE '%$job%' а теперь мне хотелось бы узнать, как дописать данную строку запроса (что вписать вместо ....) при условии, что выборка по возрасту производится в интервале от и до из переменных с формы $age1 и $age2 |
|||
|
||||
| BlackHawk |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 15.8.2003 Репутация: нет Всего: нет |
Да, и еще одна оговорка, поле Age в базе обязательно должно иметь числовой формат, или вполне хватит текстового?
Или если формат текстовый, нужно ли его преобразовывать в числовой, и как это сделать "безболезненно" для имеющихся уже данных? |
|||
|
||||
| Devorior |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 559 Регистрация: 1.8.2002 Где: Обнинск Репутация: нет Всего: 3 |
SELECT * FROM people WHERE Name LIKE '%$name%' and ....... and Job LIKE '%$job%' AND (id BETWEEN $age1 AND $age2)
|
|||
|
||||
| BlackHawk |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 15.8.2003 Репутация: нет Всего: нет |
Devorior, огромное спасибо за подсказку, выглядит вполне логично, но результат поиска не выводит, хотя и сообщение об ошибке не выдает. Может здесь дело в синтаксисе?
|
|||
|
||||
| BlackHawk |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 15.8.2003 Репутация: нет Всего: нет |
Я попробовал другую конструкцию типа:
age >= $age1 AND age <= $age2 - это банально и логично, но тоже не работает, чавой-то, несмотря на то, что поле age является INT |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: нет Всего: 32 |
А как выглядит полный запрос? Может, не в этом дело...
-------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| BlackHawk |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 15.8.2003 Репутация: нет Всего: нет |
Полный запрос выглядит примерно так:
$query="SELECT * FROM `people` WHERE lastname LIKE '%$last_name%' and name LIKE '%$name%' and town LIKE '%$s_town%' and job_title LIKE '%$job_title%' and sex LIKE '%$s_sex%' and education LIKE '%$s_education%' and stage LIKE '%$s_stage%' and employment LIKE '%$s_employment%' and sitizenship LIKE '%$s_sitizenship%' and address LIKE '%$address%' and (age BETWEEN '$age1' AND '$age2') ORDER BY `ID`"; |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: нет Всего: 32 |
Попробуй так:
-------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| BlackHawk |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 15.8.2003 Репутация: нет Всего: нет |
Судя по коду, я понимаю, что сообщение должно было бы появиться в окне браузера. Но никакого сообщения нет!
|
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: нет Всего: 32 |
Тогда, насколько я понимаю, скорее всего просто нет записей, удовлетворяющих данным условиям. mysql_num_rows() ввозвращает ноль?
-------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: нет Всего: 32 |
И еще: полезно будет просто посмотреть, как выглядит запрос в конечном варианте. Т.е. когда все PHP-шные переменные в запросе будут заменены на значения.
-------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| BlackHawk |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 15.8.2003 Репутация: нет Всего: нет |
То-то и оно, MuToGeN, что запрос, который я послал - в первоначальном виде, только немного укорочен за ненадобностью. Причем все в запросе, исключая часть с полем age работает на ура. И еще, даже когда я ввожу в обе переменных одинаковые значения, равные значению искомой записи (которая на 100% существует), все равно выводится нулевой результат. этом случае речь даже не идет об интервалах. Видимо просто дело в самой конструкции.
А ты как считаешь? |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: нет Всего: 32 |
Какая-то непонятная проблема... Все должно прекрасно работать, если значения подставляются в нормальном виде.
Может, переместить топик в раздел по БД? -------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |