Intereting Posts
как включить асинхронные функции curl's? Вопросительные знаки вместо китайских символов Как вы указываете предложение IN в динамическом запросе с использованием переменной? Замена тегов в фигурных скобках, даже вложенных тегах, с регулярным выражением Добавление настраиваемых полей измерения для каждой настройки параметров для переменных продуктов Что такое допустимые и читаемые подходы к комментариям в PHP5? Как включить в форму сущности некоторые поля из другого объекта? Цикл таблицы PHP / базы данных – отображает только 15 строк во времени Генерация и деление сетки с помощью css / js / php Алгоритм Class Scheduling для наилучшего соответствия критериям? PHP цикл X количество раз Не получайте сообщение об ошибке, если имя входа неверно, просто пустой div, но я могу определить неправильный пароль, если имя пользователя правильно автозаполнение в codeigniter Получить URL-адрес, данный URL-адрес перенаправляется на Как заменить несколько элементов из текстовой строки в PHP?

выбрать запрос в sql

Мне нужно создать sql-запрос для таблицы «продукты». Структура таблицы выглядит следующим образом:

item_no pack_no name model sellingprice discount price_rs quality 101 1001 aa 2001 $500 10% Rs.24750 excellent 102 1002 bb 1996 $400 5% Rs.20900 poor 103 1003 cx 1986 $400 5% Rs.20900 good 104 1004 dx 2010 $500 10% Rs.24750 poor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 5000 bx 1998 $200 10% Rs.9900 very good 

и так далее..

У меня есть различные условия, которые заключаются в следующем:

Сказать,

Мне нужно отфильтровать все продукты, чьи

 model is between 1990 to 2010 AND sellingprice is between 600 to 700 AND discount is between 0 to 20% AND quality is between good and excellent 

Все это в одном выражении SELECT. Возможно ли это, или мне нужно создать различные инструкции, а затем объединить результат?

Solutions Collecting From Web of "выбрать запрос в sql"

Его можно сделать в одном запросе select. Вот пример:

 select field-1, field-2,.....,field-n from tablename where (field-1 between value-1 and value-2) AND (field-2 between value-3 and value-4) AND (field-3 IN ('value-5', 'value-6',...,'value-n')) ............ AND (field-n ....[CONDITION].......) where [CONDITION] 

Вы можете сделать это в одном запросе SELECT и построить его динамически.

Например, предположим, что вы можете иметь «модель» между 1990 и 2010 годами, используя два combobox. По умолчанию для comboboxes указано «any»:

 $ands = array(); $betweens = array('model', 'sellingprice', ...); foreach ($betweens as $basekey) { $key1 = $basekey . '_from'; if (!isset($_POST[$key1])) continue; if ('' == ($val1 = $_POST[$key1])) continue; $key2 = $basekey . '_to'; if (!isset($_POST[$key2])) continue; if ('' == ($val2 = $_POST[$key2])) continue; // Check that val1 and val2 have sane values // PDO would be a little different, and slightly more complicated // On the other hand, if NOT using PDO, SQL injection has to be taken into // account. Just in case. if (!is_numeric($val1)) $val1 = "'" . mysql_real_escape_string($val1) . "'"; if (!is_numeric($val2)) $val2 = "'" . mysql_real_escape_string($val2) . "'"; $ands[] = "($basekey BETWEEN $val1 AND $val2)"; } 

Теперь у вас есть множество дополнительных, необязательных условий, которые могут быть объединены с AND:

 $and_query = implode(' AND ', $ands); 

И полученное условие, если оно не пустое, может быть использовано:

 $query = "SELECT ... WHERE ( main conditions )"; if (count($ands)) $query .= " AND ( $and_query ) "; 

Вы также можете добавить условия, «равные» с полями, отличными от полей, перечисленных в $ betweens.

Да, это возможно.

 Select * from table where (model between 1990 and 2010) AND (sellingprice between 600 and 700) AND (discount between 0 and 20) AND (quality IN ('good', 'very good', 'excellent')); 
 SELECT * FROM products where model >=1990 AND model <= 2010 AND sellingprice >= 600 AND sellingprice <=700 AND discount <= 20 AND (quality ="good" OR quality ="very good" OR quality ="excellent") 

возможно только в том случае, если знаки «$» и «%» не хранятся в БД