Форум программистов, компьютерный форум CyberForum.ru

Фильтр SQL по трем параметрам - PostgreSQL

Восстановить пароль Регистрация
 
Левиафам
 Аватар для Левиафам
31 / 26 / 5
Регистрация: 31.05.2012
Сообщений: 419
18.12.2016, 01:14     Фильтр SQL по трем параметрам #1
привет кодеры! Вопрос такой, нужно сделать фильтр по трем параметрам.
Если кратко, то хочу чтобы селект происходил по трем параметрам, но не все параметры могут быть указаны и при этом
селект должен фильтровать по тем параметрам которые имеет.

Допустим хочу вывести студентов и в фильтре указываю имя, рост и вес и пишу такой селект

SQL
1
SELECT * FROM students WHERE name = 'вася' AND height = '175'  AND weight = '100'
здесь нужно обязательно три параметра заполнить, а если не заполню хотя бы один, то он не выведет ничего.
Я хочу чтобы у меня параметры были динамичны, если заполнил два параметра а один не заполнил, то хочу чтобы по двум параметрам искал или если заполнил один то пусть тогда по одному фильтрует. Если ничего не заполнил то вообще не выводит ничего.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2016, 01:14     Фильтр SQL по трем параметрам
Посмотрите здесь:

Дерево SQL PostgreSQL
SQL запрос из скрипта PostgreSQL
Запрос к Sql server PostgreSQL
Выборка SQL PostgreSQL
Выборка SQL PostgreSQL
PostgreSQL Сложный SQL запрос
Сложный SQL запрос PostgreSQL
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Grossmeister
Модератор
2461 / 2129 / 301
Регистрация: 21.01.2011
Сообщений: 9,581
19.12.2016, 13:00     Фильтр SQL по трем параметрам #2
Цитата Сообщение от Левиафам Посмотреть сообщение
но не все параметры могут быть указаны и при этом
селект должен фильтровать по тем параметрам которые имеет
О какой СУБД идет речь?
pincet
 Аватар для pincet
1102 / 763 / 80
Регистрация: 23.07.2010
Сообщений: 3,856
19.12.2016, 16:27     Фильтр SQL по трем параметрам #3
читать про OR для начала

Добавлено через 38 секунд
и да, огласить СУБД - ибо параметры везде по-разному готовятся
Левиафам
 Аватар для Левиафам
31 / 26 / 5
Регистрация: 31.05.2012
Сообщений: 419
19.12.2016, 23:20  [ТС]     Фильтр SQL по трем параметрам #4
Цитата Сообщение от Grossmeister Посмотреть сообщение
О какой СУБД идет речь?
postgres

Добавлено через 38 секунд
Цитата Сообщение от pincet Посмотреть сообщение
OR
на чистых or далеко не уехать

Добавлено через 25 секунд
Цитата Сообщение от pincet Посмотреть сообщение
ибо параметры везде по-разному готовятся
как понять?
pincet
 Аватар для pincet
1102 / 763 / 80
Регистрация: 23.07.2010
Сообщений: 3,856
20.12.2016, 09:13     Фильтр SQL по трем параметрам #5
вот тебе пример для сиквела (это я за параметры)
T-SQL
1
where @para1 is null or field1=@para1
только готовься к плохим планам
Левиафам
 Аватар для Левиафам
31 / 26 / 5
Регистрация: 31.05.2012
Сообщений: 419
20.12.2016, 11:42  [ТС]     Фильтр SQL по трем параметрам #6
pincet, я бы хотел решение в качестве обычного sql запроса
pincet
 Аватар для pincet
1102 / 763 / 80
Регистрация: 23.07.2010
Сообщений: 3,856
20.12.2016, 12:08     Фильтр SQL по трем параметрам #7
Цитата Сообщение от Левиафам Посмотреть сообщение
pincet, я бы хотел решение в качестве обычного sql запроса
а что тут не "обычный sql запрос"
ежели не хватает опыта додумать - ну.....
grgdvo
500 / 441 / 119
Регистрация: 02.09.2012
Сообщений: 1,283
20.12.2016, 14:26     Фильтр SQL по трем параметрам #8
Цитата Сообщение от Левиафам Посмотреть сообщение
здесь нужно обязательно три параметра заполнить, а если не заполню хотя бы один, то он не выведет ничего.
что значит "не заполню хотя бы один"?? пустая строка что ли '' ? тогда конечно не будет работать.
такие вещи обычно на клиенте делаются, генерируется SQL под запрос.
если параметр не заполняется в клиенте, то и включать его в логическое выражение не надо вообще.
и будьте аккуратны, делая такую генерацию, можно схватить SQL-инъекцию.

Добавлено через 3 минуты
и уж если генерируете запрос на клиенте, старайтесь строки сравнивать как строки, а числа - как числа.
парсер запроса, конечно, типы приведет, но явная работа с типами данных более предсказуема с точки выбора индексов для быстрого поиска.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2016, 14:55     Фильтр SQL по трем параметрам
Еще ссылки по теме:

SQL state: 42601 PostgreSQL
PostgreSQL Защита от sql инъекций
Парсер SQL запроса PostgreSQL
SQL Shell (psql) PostgreSQL
PostgreSQL SQL запрос

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
pincet
 Аватар для pincet
1102 / 763 / 80
Регистрация: 23.07.2010
Сообщений: 3,856
20.12.2016, 14:55     Фильтр SQL по трем параметрам #9
Цитата Сообщение от grgdvo Посмотреть сообщение
и уж если генерируете запрос на клиенте,
+100500 - DAL
Yandex
Объявления
20.12.2016, 14:55     Фильтр SQL по трем параметрам
Ответ Создать тему
Опции темы

Текущее время: 08:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru