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

PostgreSQL

Войти
Регистрация
Восстановить пароль
 
Левиафам
32 / 27 / 5
Регистрация: 31.05.2012
Сообщений: 450
#1

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

18.12.2016, 01:14. Просмотров 321. Ответов 8
Метки нет (Все метки)

привет кодеры! Вопрос такой, нужно сделать фильтр по трем параметрам.
Если кратко, то хочу чтобы селект происходил по трем параметрам, но не все параметры могут быть указаны и при этом
селект должен фильтровать по тем параметрам которые имеет.

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

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 по трем параметрам
Посмотрите здесь:
Visual Basic .NET Как реализовать фильтр по двум параметрам в БД SQL
MySQL Уникальность по трем параметрам
Построить график по трем параметрам Delphi
Поиск в DataGridView по трем параметрам C#
MS Excel Поиск значения в таблице по трем параметрам
По трем параметрам вычислить остальные элементы QBasic
По трем заданным параметрам треугольника вычислить все остальные QBasic
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Grossmeister
Модератор
3145 / 2237 / 340
Регистрация: 21.01.2011
Сообщений: 10,037
19.12.2016, 13:00     Фильтр SQL по трем параметрам #2
Цитата Сообщение от Левиафам Посмотреть сообщение
но не все параметры могут быть указаны и при этом
селект должен фильтровать по тем параметрам которые имеет
О какой СУБД идет речь?
pincet
1237 / 807 / 85
Регистрация: 23.07.2010
Сообщений: 4,127
19.12.2016, 16:27     Фильтр SQL по трем параметрам #3
читать про OR для начала

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

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

Добавлено через 25 секунд
Цитата Сообщение от pincet Посмотреть сообщение
ибо параметры везде по-разному готовятся
как понять?
pincet
1237 / 807 / 85
Регистрация: 23.07.2010
Сообщений: 4,127
20.12.2016, 09:13     Фильтр SQL по трем параметрам #5
вот тебе пример для сиквела (это я за параметры)
T-SQL
1
where @para1 is null or field1=@para1
только готовься к плохим планам
Левиафам
32 / 27 / 5
Регистрация: 31.05.2012
Сообщений: 450
20.12.2016, 11:42  [ТС]     Фильтр SQL по трем параметрам #6
pincet, я бы хотел решение в качестве обычного sql запроса
pincet
1237 / 807 / 85
Регистрация: 23.07.2010
Сообщений: 4,127
20.12.2016, 12:08     Фильтр SQL по трем параметрам #7
Цитата Сообщение от Левиафам Посмотреть сообщение
pincet, я бы хотел решение в качестве обычного sql запроса
а что тут не "обычный sql запрос"
ежели не хватает опыта додумать - ну.....
grgdvo
545 / 481 / 138
Регистрация: 02.09.2012
Сообщений: 1,415
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 по трем параметрам
Еще ссылки по теме:
Turbo Pascal По трем заданным параметрам треугольника вычислить все остальные.
фильтр по параметрам из списков MS Access
Фильтр по заданным параметрам из БД PHP БД
Фильтр по нескольким параметрам WordPress
Фильтр информации по заданным параметрам PHP БД

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

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

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