URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 908
[ Назад ]

Исходное сообщение
"Скрипт поиска в mysql базе"

Отправлено Duke , 23-Ноя-02 20:57 
В программировании perl я очень далекий человек. Максимум, что приходилось делать - заточка и настройка гостевых, форумов, голосований и т.п.
Тут приспичило написать скриптик который вынимал бы из mysql таблицы только те строки которые удовлетворяли бы параметрам запроса по нескольким параметрам этой строки. Т.е. таблица 15 колонок - параметры радиоэлементов. Пользователь задает из 15 только 3 (например) - диапазон емкостей, пробивное U и массу искомого кондёра, и скрипт выдает ему строки из бызы удовлетворяющие его запросу.

Как искать по одному параметру я разобрался :)

$sth = $dbh->query("SELECT * FROM condenser WHERE nom_emk_min>=$nom_emk_min AND nom_emk_max<=$nom_emk_max");

А вот как искать по нескольким параметрам, причем так чтоб не обязатьльно по вем возможным (в моем случае 15).
Подскажите пожалуйста.


Содержание

Сообщения в этом обсуждении
"RE: Скрипт поиска в mysql базе"
Отправлено Robert , 24-Ноя-02 00:21 
>В программировании perl я очень далекий человек. Максимум, что приходилось делать -
>заточка и настройка гостевых, форумов, голосований и т.п.
>Тут приспичило написать скриптик который вынимал бы из mysql таблицы только те
>строки которые удовлетворяли бы параметрам запроса по нескольким параметрам этой строки.
>Т.е. таблица 15 колонок - параметры радиоэлементов. Пользователь задает из 15
>только 3 (например) - диапазон емкостей, пробивное U и массу искомого
>кондёра, и скрипт выдает ему строки из бызы удовлетворяющие его запросу.
>
>
>Как искать по одному параметру я разобрался :)
>
>$sth = $dbh->query("SELECT * FROM condenser WHERE nom_emk_min>=$nom_emk_min AND nom_emk_max<=$nom_emk_max");
>
>А вот как искать по нескольким параметрам, причем так чтоб не обязатьльно
>по вем возможным (в моем случае 15).
>Подскажите пожалуйста.


nu tak i pishi dalshe :
$sth = $dbh->query("SELECT * FROM condenser WHERE nom_emk_min>=$nom_emk_min AND nom_emk_max<=$nom_emk_max AND param1=$value1 and param2<>$value2 ");
i tak daleee


"RE: Скрипт поиска в mysql базе"
Отправлено Duke , 24-Ноя-02 01:30 
>nu tak i pishi dalshe :
>$sth = $dbh->query("SELECT * FROM condenser WHERE nom_emk_min>=$nom_emk_min AND nom_emk_max<=$nom_emk_max AND param1=$value1 and param2<>$value2 ");
>i tak daleee

Нет, это не подходит.
При предложенном варианте скрипт ищет только если заданы все параметры для поиска.
Если один из параметров не задать (т.е. $nom_volt eq '') тогда скрипт вообще не ищет. А надо чтобы искал.

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


"RE: Скрипт поиска в mysql базе"
Отправлено J , 25-Ноя-02 12:52 
>>nu tak i pishi dalshe :
>>$sth = $dbh->query("SELECT * FROM condenser WHERE nom_emk_min>=$nom_emk_min AND nom_emk_max<=$nom_emk_max AND param1=$value1 and param2<>$value2 ");
>>i tak daleee
>
>Нет, это не подходит.
>При предложенном варианте скрипт ищет только если заданы все параметры для поиска.
>
>Если один из параметров не задать (т.е. $nom_volt eq '') тогда скрипт
>вообще не ищет. А надо чтобы искал.
>
>Можно сформулировать вопрос так:
>Как дать "понять" базе, что если какой-либо параметр не задан, то выбирать
>информацию из таблицы игнорирую его, но не игнорируя заданные?


а перл вам на что тогда?
кстати, в mysql есть оператор between(это к nom_emk_min>=$nom_emk_min AND nom_emk_max<=$nom_emk_max), что лучше отимизируется самим mysql