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

PostgreSQL

Войти
Регистрация
Восстановить пароль
 
Левиафам
33 / 28 / 9
Регистрация: 31.05.2012
Сообщений: 500
#1

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

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

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

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

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

Как реализовать фильтр по двум параметрам в БД SQL - Visual Basic .NET
Здравствуйте! Сделав фильтр с одним параметро у меня получилось. А с двумя не получается. Проблема в следующем: У меня два текстбокса,...

Уникальность по трем параметрам - MySQL
Создается временная таблица $query = "CREATE TEMPORARY TABLE posetit_google ( id INT (11) NOT NULL...

Поиск в DataGridView по трем параметрам - C#
Здравствуйте! 1. Имеется DataGridView с 6 ячейками. Мне нужно выполнить поиск по одному из трех параметров: Номер документа, Номер...

Построить график по трем параметрам - Delphi
Здравствуйте! Подскажите пожалуйста, возможно ли с помощью TChart построить график распределения температуры по двум координатным осям...

Поиск значения в таблице по трем параметрам - MS Excel
Доброго времени суток, Форумчане. Работаю в компании, которая занимается продажей систем отопления. В процессе подбора оборудования...

По трем параметрам вычислить остальные элементы - QBasic
Дан прямоугольный треугольник ABC (γ = 90°), для которого определен следующий набор характерных параметров (рис. 53): а, b, с — стороны...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Grossmeister
Модератор
3153 / 2247 / 345
Регистрация: 21.01.2011
Сообщений: 10,065
19.12.2016, 13:00 #2
Цитата Сообщение от Левиафам Посмотреть сообщение
но не все параметры могут быть указаны и при этом
селект должен фильтровать по тем параметрам которые имеет
О какой СУБД идет речь?
0
pincet
1242 / 811 / 86
Регистрация: 23.07.2010
Сообщений: 4,149
19.12.2016, 16:27 #3
читать про OR для начала

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

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

Добавлено через 25 секунд
Цитата Сообщение от pincet Посмотреть сообщение
ибо параметры везде по-разному готовятся
как понять?
0
pincet
1242 / 811 / 86
Регистрация: 23.07.2010
Сообщений: 4,149
20.12.2016, 09:13 #5
вот тебе пример для сиквела (это я за параметры)
T-SQL
1
where @para1 is null or field1=@para1
только готовься к плохим планам
0
Левиафам
33 / 28 / 9
Регистрация: 31.05.2012
Сообщений: 500
20.12.2016, 11:42  [ТС] #6
pincet, я бы хотел решение в качестве обычного sql запроса
0
pincet
1242 / 811 / 86
Регистрация: 23.07.2010
Сообщений: 4,149
20.12.2016, 12:08 #7
Цитата Сообщение от Левиафам Посмотреть сообщение
pincet, я бы хотел решение в качестве обычного sql запроса
а что тут не "обычный sql запрос"
ежели не хватает опыта додумать - ну.....
0
grgdvo
558 / 494 / 140
Регистрация: 02.09.2012
Сообщений: 1,443
20.12.2016, 14:26 #8
Цитата Сообщение от Левиафам Посмотреть сообщение
здесь нужно обязательно три параметра заполнить, а если не заполню хотя бы один, то он не выведет ничего.
что значит "не заполню хотя бы один"?? пустая строка что ли '' ? тогда конечно не будет работать.
такие вещи обычно на клиенте делаются, генерируется SQL под запрос.
если параметр не заполняется в клиенте, то и включать его в логическое выражение не надо вообще.
и будьте аккуратны, делая такую генерацию, можно схватить SQL-инъекцию.

Добавлено через 3 минуты
и уж если генерируете запрос на клиенте, старайтесь строки сравнивать как строки, а числа - как числа.
парсер запроса, конечно, типы приведет, но явная работа с типами данных более предсказуема с точки выбора индексов для быстрого поиска.
0
pincet
1242 / 811 / 86
Регистрация: 23.07.2010
Сообщений: 4,149
20.12.2016, 14:55 #9
Цитата Сообщение от grgdvo Посмотреть сообщение
и уж если генерируете запрос на клиенте,
+100500 - DAL
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2016, 14:55
Привет! Вот еще темы с ответами:

По трем заданным параметрам треугольника вычислить все остальные - QBasic
Дан произвольный треугольник ABC (рис. 54), для которого определен следующий набор характерных параметров: а, b, с — стороны треугольника;...

По трем заданным параметрам треугольника вычислить все остальные. - Turbo Pascal
Дан произвольный треугольник ABC, для которого определен следующий набор характерных параметров: а, b, с — стороны треугольника; α, β, γ —...

Фильтр по нескольким параметрам - WordPress
Добрый день форумчане! Есть задача сделать фильтр как на картинке. Есть группы фильтра, у каждой записи есть пользовательские поля. ...

фильтр по параметрам из списков - MS Access
Доброго времени суток. Уважаемые, помогите разобраться с фильтром по параметрам из списков ( выпадающим списком с галочками). Например, я...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.12.2016, 14:55
Ответ Создать тему
Опции темы

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