Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
 Запрос в oracle SQL для поиска по указанным параметрам и не по всем заданным параметрам  [new]
Lev5137
Member

Откуда:
Сообщений: 9
Помогите пожалуйста с одним запросом.
Найти человека по указанным параметрам:
- телефон
- ФИО
- документ
Обязательное требование по запросу где поиск по параметрам. Надо учесть что параметры могут быть не указаны. То есть поиск человека только по фио. И это должно быть в 1 запрос как то.
Писал запрос, но он у меня не срабатывает так как мне надо. я так понял чтобы выводило либо со всеми параметрами, либо без каких то параметров, но при этом там не пустые поля должны быть, а просто считается, что при формировании условия человек не ввел данный параметр для поиска. Вот как в этой ситуации написать запрос.
Я писал запрос вот так, но он не выдает то что мне нужно, если я например сделаю какие то значения ' ':

select pd.ID_PERSONAL_DATA, 
pd.P_NAME, 
pd.P_SURNAME, 
pd.PATRONYMIC, 
pd.PHONE_NUMBER, 
dc.DOCUMENT_NAME
FROM COURSEWORK.PERSONAL_DATA pd FULL OUTER JOIN COURSEWORK.DOCUMENTS d ON pd.id_personal_data=d.id_personal_data
FULL OUTER JOIN COURSEWORK.DOCUMENT_CATEGORY dc ON dc.id_document_category=d.id_document_category
where (pd.P_NAME='Анников' and pd.P_SURNAME='Евстигней' and pd.PATRONYMIC='Вадимович' and pd.PHONE_NUMBER = 89200571627 and dc.document_name='водительские права')
or (pd.P_NAME='Анников' and pd.P_SURNAME='Евстигней' and pd.PATRONYMIC='Вадимович' and pd.PHONE_NUMBER = 89200571627)
or (pd.P_NAME='Анников' and pd.P_SURNAME='Евстигней' and pd.PATRONYMIC='Вадимович' and dc.document_name='водительские права')
or (pd.P_NAME='Анников' and pd.P_SURNAME='Евстигней' and pd.PATRONYMIC='Вадимович');


Сообщение было отредактировано: 1 июн 20, 23:52
1 июн 20, 23:25    [22144065]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в oracle SQL для поиска по указанным параметрам и не по всем заданным параметрам  [new]
alexzaides
Member

Откуда: Нижний Новгород
Сообщений: 29
Lev5137,

2 вопроса -
1.база какая?
2.Зачем там full join ?

Модератор: Тема перенесена из форума "Работа".


Сообщение было отредактировано: 1 июн 20, 23:53
1 июн 20, 23:54    [22144081]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в oracle SQL для поиска по указанным параметрам и не по всем заданным параметрам  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 62785
Блог
Lev5137
Я писал запрос вот так, но он не выдает то что мне нужно, если я например сделаю какие то значения ' '

Значит, его нужно изменить так, чтобы он выдавал то, что Вам нужно. Попробуйте написать похожий запрос, который ищет по ФИО и телефону (без документа) и посмотрите, чем он отличается от Вашего. А затем подумайте, что надо дописать к Вашему запросу, чтобы в случае неуказания документа он по сути превращался во второй Вами написанный.

P.S. Работать с номером телефона как с числом - плохая идея.
2 июн 20, 00:00    [22144084]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в oracle SQL для поиска по указанным параметрам и не по всем заданным параметрам  [new]
alexzaides
Member

Откуда: Нижний Новгород
Сообщений: 29
Lev5137,

select pd.ID_PERSONAL_DATA,
pd.P_NAME,
pd.P_SURNAME,
pd.PATRONYMIC,
pd.PHONE_NUMBER,
dc.DOCUMENT_NAME
FROM COURSEWORK.PERSONAL_DATA pd
JOIN COURSEWORK.DOCUMENTS d ON pd.id_personal_data=d.id_personal_data
JOIN COURSEWORK.DOCUMENT_CATEGORY dc ON dc.id_document_category=d.id_document_category
where (pd.P_NAME='Анников' and pd.P_SURNAME='Евстигней' and pd.PATRONYMIC='Вадимович') and
(pd.PHONE_NUMBER is null or pd.PHONE_NUMBER = 89200571627) and (dc.document_name is null or dc.document_name='водительские права')


не пойдёт?
2 июн 20, 00:00    [22144085]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в oracle SQL для поиска по указанным параметрам и не по всем заданным параметрам  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 62785
Блог
alexzaides
не пойдёт?

Может и пойдёт. Но постановке задачи не соответствует.
2 июн 20, 00:01    [22144086]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в oracle SQL для поиска по указанным параметрам и не по всем заданным параметрам  [new]
Lev5137
Member

Откуда:
Сообщений: 9
alexzaides,
база oracle.
по поводу join я просто хотел все в 1 запрос сделать и как машинально сделал через full join. я с join не очень хорошо понимаю в каком случае какой применять. ну full join это когда можно в обоих столбцах иметь пустые значения. вообщем как я понял ваши замечания, здесь надо просто через join сделать
2 июн 20, 00:02    [22144087]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в oracle SQL для поиска по указанным параметрам и не по всем заданным параметрам  [new]
Lev5137
Member

Откуда:
Сообщений: 9
alexzaides,

я так пробовал писать, но как я понял там надо чтобы выводились строчки. причем они должны быть не пустые. у меня в БД нет пустых строчек. просто если я напишу приложение и например в качестве парамета dc.document_name задам пустую строку ' ' , то запрос ничего не выодит, а по идее должно выводиться больше строк, ведь меньше данных для поиска

Сообщение было отредактировано: 2 июн 20, 00:09
2 июн 20, 00:04    [22144089]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в oracle SQL для поиска по указанным параметрам и не по всем заданным параметрам  [new]
alexzaides
Member

Откуда: Нижний Новгород
Сообщений: 29
softwarer,

ну постановка так сформулирована, что сложно сказать, что ей соответствует. Я просто переписал тот запрос что есть, чтобы он глаза поменьше резал
2 июн 20, 09:52    [22144191]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в oracle SQL для поиска по указанным параметрам и не по всем заданным параметрам  [new]
alexzaides
Member

Откуда: Нижний Новгород
Сообщений: 29
Lev5137,

ну шо я вам таки могу сказать... Учите матчасть. Оно полезно иногда.
Во первых в оракле пустая строка === NULL. и проверять надо на него, а не на пустую строку
Во вторых - с типами join таки стоит разобраться
2 июн 20, 09:55    [22144192]     Ответить | Цитировать Сообщить модератору
Все форумы / Программирование Ответить