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

Откуда:
Сообщений: 27
Есть 3 таблицы

1) gossrvc_doc_package
pack_num (номер дела)
service_id (идентификатор №1)
applicant_group_id (идентификатор №2)
pack_date (Дата дела)

2) card_element
id (Идентификатор №1)
name (Наименование ОГВ и услуг)

3) gossrvc_request
request_num (номер дела как и в gossrvc_doc_package)
ogv_id (идентификатор ОГВ)

Надо выдать pack_num, pack_date, card_element.name (наименование ОГВ), card_element.name (наименование Услуги)

В первой таблице хранятся номера дел да и вообщем полно ещё всякой шняги, Во второй хнанятся наименования Услуг и Наименования ОГВ. Третья таблица содержит номера дел и идентификатор ОГВ по которову эти дела прошли

Я составил запрос:

select g.pack_date,g.pack_num,g.service_id, u1.name, r1.ogv_id
as service_id
from gossrvc_doc_package g
left outer join card_element u1 on u1.id = g.service_id
left outer join gossrvc_request r1 on r1.request_num = g.pack_num
where g.pack_num = '2012/1659' and g.pack_date = '26.06.2012'


из которого выводятся поля из таблицы gossrvc_doc_package она соединена с таблицей card_elemen по "u1.id = g.service_id" так я получаю наименование услуги и вывожу его "u1.name" в запросе. Также связь с "gossrvc_request" вот она
"left outer join gossrvc_request r1 on r1.request_num = g.pack_num" из чего я узнаю идентификатор ОГВ в котором оказывалась услуга и вывожу его в "r1.ogv_id" И это всё отбираю по "pack_num" и "pack_date"

НО!!!
МНЕ НАДО КАК ТО В ЭТОМ ЖЕ ЗАПРОСЕ УЗНАТЬ НАИМЕНОВАНИЕ ОГВ ПО ЕГО ПОЛУЧЕННОМУ КОДУ И ВЫВЕСТИ В РЕЗУЛЬТАТ
НАДЕЮСЬ ПОНЯТНО ОБЪЯСНИЛ ))
26 июн 12, 15:48    [12777436]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из нескольких таблиц  [new]
Glory
Member

Откуда:
Сообщений: 104751
сделать еще один join с таблицей card_element
26 июн 12, 15:51    [12777455]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из нескольких таблиц  [new]
ostoha
Member

Откуда:
Сообщений: 27
автор
Наименование ОГВ хнарица в таблице "card_element" искать по найденному коду из таблицы "gossrvc_request"
26 июн 12, 15:51    [12777457]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из нескольких таблиц  [new]
ostoha
Member

Откуда:
Сообщений: 27
Что то не приходит не чего в голову вот только но НЕ ПРАВИЛЬНО:

select g.pack_date,g.pack_num,g.service_id, u1.name, u2.name
as service_id
from gossrvc_doc_package g
left outer join card_element u1 on u1.id = g.service_id
left outer join gossrvc_request r1 on r1.request_num = g.pack_num,
card_element
left outer join card_element u2 on u2.id = r1.ogv_id
where g.pack_num = '2012/1659' and g.pack_date = '26.06.2012'


Выводится около 2 тысяч строк такого вида

автор
PACK_DATE PACK_NUM SERVICE_ID NAME SERVICE_ID1
26.06.2012 2012/1659 SServOhota0001 Выдача охотничьих билетов Управление охотничьего хозяйства Алтайского края


а нужно 1 ))
26 июн 12, 16:11    [12777620]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из нескольких таблиц  [new]
Glory
Member

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

а вот эта конструкция в запросе для чего ?
26 июн 12, 16:16    [12777671]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из нескольких таблиц  [new]
ostoha
Member

Откуда:
Сообщений: 27
Сделал )))

select g.pack_date,g.pack_num,g.service_id, u1.name, u2.name
as service_id
from gossrvc_doc_package g
left outer join card_element u1 on u1.id = g.service_id
left outer join gossrvc_request r1 on r1.request_num = g.pack_num,
left outer join card_element u2 on u2.id = r1.ogv_id
where g.pack_num = '2012/1659' and g.pack_date = '26.06.2012'


Спасибо Всем, будет продолжение есть ещё 3 таблицы к уже существующим этим "с условием" соображу как написать и тогда задам вопрос здесь же будет завтра
26 июн 12, 16:19    [12777689]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из нескольких таблиц  [new]
ostoha
Member

Откуда:
Сообщений: 27
А что нибудь типа такого можно в SQL сделать?

select g.pack_date,g.pack_num, u1.name, u2.name, o1.object_group_id, o1.object_class
as service_id
from gossrvc_doc_package g
left outer join card_element u1 on u1.id = g.service_id
left outer join gossrvc_request r1 on r1.request_num = g.pack_num
left outer join card_element u2 on u2.id = r1.ogv_id
left outer join object_group_item o1 on o1.object_group_id = g.applicant_group_id
if (o1.object_class = 'org.cp.model.common.Person') then
{left outer join person p1 on p1.id = o1.object_id}
else
{left outer join agent p1 on p1.id = o1.object_id}
where g.pack_num = '2012/1659' and g.pack_date = '26.06.2012'
26 июн 12, 16:53    [12777971]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из нескольких таблиц  [new]
ostoha
Member

Откуда:
Сообщений: 27
Лишнее лишь, про то что я спрашиваю:

автор
if (o1.object_class = 'org.cp.model.common.Person') then
{left outer join person p1 on p1.id = o1.object_id}
else
{left outer join agent p1 on p1.id = o1.object_id}
26 июн 12, 16:54    [12777981]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить