Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » PHP+MySQL

Ответить
Настройки темы
PHP+MySQL
GhostBuster


Сообщения: n/a

Профиль | Цитировать


Братцы-программеры!!!

Объясните "чайнику", каким образом построить MySQL-запрос на выборку в некоторых пределах, например:

Имеется некая таблица table с записями
-----------------------------------------------------
ID Name Age Job
-----------------------------------------------------
01 Саша *22 *художник
02 Петя * 25 *дизайнер
03 Лена * 20 *модельер
04 Вася * *30 *музыкант
-----------------------------------------------------
И имеется форма с параметрами поиска по ID, имени, возрасту и профессии.

Необходимо послать из формы запрос на выборку например по возрасту в интервалах, заданных на форме ($age1 и $age2), пусть они будут, например, сответственно 18-28

Синтаксис запроса будет выглядеть след. образом:
SELECT * FROM table WHERE id LIKE '$id' AND name LIKE '%$name%' AND ... AND job LIKE '%$job%'

Вопрос в том, как дописать строку запроса (что вписать вместо ...). Да и еще одно условие - поле age в безе является текстовым (может стоит изменить его формат на числовой, или это не обязательно?).

Отправлено: 11:34, 20-08-2003

 

редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


GhostBuster
Если формат числовой, то банальное age >= 18 AND age <= 28 вполне будет работать.

-------
http://ivank.ru


Отправлено: 11:45, 20-08-2003 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

GhostBuster


Сообщения: n/a

Профиль | Цитировать


Казалось бы все так просто, но не работает! Я даже пробовал другую конструкцию:

SELECT * FROM table WHERE id LIKE '$id' AND name LIKE '%$name%' AND ... AND job LIKE '%$job%' AND (age BETWEEN $age1 and $age2), что кстати тоже не работает. И даже не выдает сообщения об ошибке, а просто выводит нулевой результат запроса.

Отправлено: 14:42, 20-08-2003 | #3


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Имхо что-то делаешь не так... приглядись внимательнее. Возраст и правда следует хранить в числовом формате (опять-таки имхо ). Плюс, не нравится мне этот твой ЛАЙК, ведь АйДи вроде как уникален, почему тогда не знак сравнения равенства использовать?

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 01:21, 21-08-2003 | #4

GhostBuster


Сообщения: n/a

Профиль | Цитировать


Причина моей ошибки банальна - случайно раскоментировалась "лишняя" строка и возник конфликт, правда интерпретатор почему-то не выдавал сообщение об ошибке! Именно это и загнало меня в тупик, я думал, что все дело в синтаксисе!
На счет ID Prisoner абсолютно прав, каюсь, поторопился!

Возникла проблема другого рода:
во-первых должен сказать, что оба варианта запроса работают просто отлично, но блокируют собой всю остальную часть запроса!

На практике это выглядит так:
Комплексный запрос подается с формы с множеством параметров выборки, в том числе и выборка по возрасту в заданных пределах, но если в запрос "вклеить" одну из приведенных конструкций запроса выборки по интервалу, то все остальные параметры запроса просто перестают работать!!!

Отправлено: 13:23, 21-08-2003 | #5


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Забавно...  имхо дело опять-таки не в глюках софта и программера. Погляди сам - чем больше требований к чему-либо(абстрактно давай помыслим), тем меньше этого чего-либо будет этим требованиям отвечать.

Пример: хочу из приведенной в твоем первом посте найти человека с возрастом (34,45), именем Микаэль, работай - ассенизатор. Вон сколько параметров, а результат нулевой.

Чем больше выбор, тем больше вероятность, что даже сложные запросы с большим числом параметров (хоть по всем полям), отловят какие-то строки и их число будет даже больше нуля .

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 16:22, 21-08-2003 | #6

GhostBuster


Сообщения: n/a

Профиль | Цитировать


Prisoner, ты говоришь о пользовательской выборке, когда ты _надеешься_ найти то, что сответствует твоему запросу. А я говорю об административной выборке записи, которую я сам же и создал, мне ли не знать, что она существует? И тут хоть сколько параметров вводи, если запрос соответствует действительности, запись будет найдена.

Дело в другом. Тут можно задать всего 2 параметра запроса, например, по имени и по возрастным ограничениям - результат: все равно не будет работать!! Вот о чем я. Дело тут не в большой выборке, а некоей несовместимости выражений в конструкции запроса.


Добавлено:

Не стану вам больше парить мозги.
Я нашел ответ. Все дело в синтаксисе кавычек в запросе!

Правильный код запроса:

SELECT * FROM table WHERE lastname LIKE '%$lastname%' and name LIKE '%$name%' and town LIKE '%$town%' and (age BETWEEN $age1 AND $age2) ORDER BY ID

Дело в том, что age, $age1 и $age2 не должны заключаться в кавычки!!!

Теперь все работает просто замечательно!!!

Отправлено: 17:26, 21-08-2003 | #7


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Угу... только хотел процитировать самого себя - "Имхо что-то делаешь не так... приглядись внимательнее." . Рад, что у тебя все получилось!

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 21:07, 21-08-2003 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » PHP+MySQL

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
php + mysql Аlchemist Программирование в *nix 10 04-09-2008 17:49
[решено] Apache 2.2.8 + Php 5.2.6 + MySQL 5.0.51b (win) - не работает php v0f41k Вебмастеру 4 11-05-2008 22:08
PHP+MYSQL pauluss Вебмастеру 6 09-07-2004 22:46
PHP and MySql Andrey V2003 Вебмастеру 2 10-10-2003 14:55
php и mysql ZDemon Программное обеспечение Linux и FreeBSD 7 08-02-2003 03:33




 
Переход