Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание запроса по документам 
:(
    Опции темы
Feller
Дата 3.3.2014, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 2.7.2010

Репутация: нет
Всего: нет



Как сделать выборку у персоны есть не сколько типов документов как выбрать либо по параметру, либо по паспорту если по паспорту нету данных то любой другой документ? База Oracle

 and (ptype is null 
                  Or    t.s=p_ser and t.n=p_num);



PM MAIL   Вверх
Akina
Дата 3.3.2014, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Ну что за неформатированный поток сознания... пожалуйста, ещё раз, то же самое, но вменяемо.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Feller
Дата 3.3.2014, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 2.7.2010

Репутация: нет
Всего: нет



У клиента есть несколько видов документов(Паспорт,За гран и.т.д).Как сделать запрос чтоб отфильтровать данные или по параметру например явно указать тип документа,
 если параметра нету то отфильтровать по типу документа паспорт , если данных по типу документа паспорт нету тогда взять другой тип документа но один. Как то так
PM MAIL   Вверх
Akina
Дата 3.3.2014, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Лучше, но всё равно не очень. Тогда:

Структуру хранения данных (упрощённо).
Наполнение (минимальное).
Примеры исходных данных и ответов на них.

И в таком разе - наверное, надо озвучить и платформу. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Feller
Дата 3.3.2014, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 2.7.2010

Репутация: нет
Всего: нет



Упрощено примерно так процедура возвращает курсор. У процедуры есть входящий параметр тип документа, серия и номер. Задача заключается в том чтобы отфильтровать запрос по параметру , или если параметр ptype null тогда отфильтровать по паспорту, но у клиента паспорта может не быть тогда нужно отфильтровать по любому другому документу.

Таблица doc содержит связь многие ко многим между таблицей doc и clients. В таблице doc сами документы.

Код

function get_cursor(
   ptype   in varchar2,
   p_ser   in varchar2,
   p_num in varchar2,
   
  ) return sys_refcursor

open t_cursor for 
 
select t.doctype,t.series,t.docnum,t.docdate,t.docid from DOC t, doclilink d, clients c
where t.docid=d.docid
and c.code=d.code

and (ptype is null 
                  Or    t.s=p_ser and t.n=p_num);


PM MAIL   Вверх
Akina
Дата 3.3.2014, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



MS SQL?
Если так - то для каждого сочетания параметров составьте свой запрос, и в зависимости от значения открывайте курсор того или иного вида. Ну типа

Код

if param1 is not null
   open cursor for select ... where field1 = param1
else
   open cursor for select ... where field2 = param2 and field3 = param3
end


А дальше код работает с курсором, данные в коем соответствуют набору параметров, и сиренево, как выглядел запрос.

UPD. Пардон, просмотрел, что Oracle. Но подход используйте тот же.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Feller
Дата 3.3.2014, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 2.7.2010

Репутация: нет
Всего: нет



 Oracle. А как я узнаю что паспорта нету у клиента, и вместо паспорта подставить другой документ?
PM MAIL   Вверх
Akina
Дата 4.3.2014, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(Feller @  3.3.2014,  22:48 Найти цитируемый пост)
 как я узнаю что паспорта нету у клиента, и вместо паспорта подставить другой документ? 

Наверное, надо просто посмотреть, какие документы принёс клиент... можно глазами.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0797 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.