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

Откуда:
Сообщений: 4
Есть две таблицы:
1. Objects
----------
Obj_ID
Obj_Name
...

2. Operations
-------------
Op_ID
Op_Date
Obj_A_ID
Obj_B_ID
...
в последней поля Obj_A_ID и Obj_B_ID связаны с таблицей Objects

например:
1. Objects
----------
1 55-54-34
2 33-10-32
3 59-43-43

2. Operations
-----------------
1 2009-06-06 1 2
2 2009-06-07 2 3
3 2009-07-01 2 3

Требуется, чтобы запрос выдал следующую информацию:
-------------------
1 2009-06-06 55-54-34 33-10-32
2 2009-06-07 33-10-32 59-43-43
3 2009-07-01 33-10-32 59-43-43

Как реализовать запрос?
7 июл 09, 14:13    [7386259]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно сформировать запрос при двойной связи между таблицами?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36799
inner join вам в помощь.
7 июл 09, 14:14    [7386272]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно сформировать запрос при двойной связи между таблицами?  [new]
S_korpion
Member

Откуда:
Сообщений: 4
В случае, если связаны между собой только поля Obj_A_ID и Obj_ID, запрос был бы следующим:

SELECT Operations.Op_ID, Operations.Op_Date, Objects.Obj_Name, Operations.Obj_B_ID
FROM Operations
INNER JOIN Objects
ON Operations.Obj_A_ID = Objects.Obj_ID

но если связаны две пары полей (как Obj_A_ID и Obj_ID, так и Obj_B_ID и Obj_ID), то запрос вида:

SELECT Operations.Op_ID, Operations.Op_Date, Objects.Obj_Name
FROM Operations
INNER JOIN Objects
ON Operations.Obj_A_ID = Objects.Obj_ID AND Operations.Obj_B_ID = Objects.Obj_ID

уже не приведет к нужному результату (результат будет пустым). Как добиться нужного?
7 июл 09, 14:25    [7386352]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно сформировать запрос при двойной связи между таблицами?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
В случае, если связаны между собой только поля Obj_A_ID и Obj_ID,
...
но если связаны две пары полей (как Obj_A_ID и Obj_ID, так и Obj_B_ID и Obj_ID),


приведите определение FK!
7 июл 09, 14:29    [7386379]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно сформировать запрос при двойной связи между таблицами?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36799
Надо делать два join'а.
7 июл 09, 14:40    [7386453]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно сформировать запрос при двойной связи между таблицами?  [new]
как-то так
Guest
SELECT Operations.Op_ID, Operations.Op_Date, o1.Obj_Name, o2.Obj_Name
FROM Operations
INNER JOIN Objects o1
ON Operations.Obj_A_ID = o1.Obj_ID
INNER JOIN Objects o2
ON Operations.Obj_B_ID = o2.Obj_ID
7 июл 09, 14:48    [7386507]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно сформировать запрос при двойной связи между таблицами?  [new]
S_korpion
Member

Откуда:
Сообщений: 4
Спасибо огромное, работает
7 июл 09, 15:09    [7386676]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно сформировать запрос при двойной связи между таблицами?  [new]
S_korpion
Member

Откуда:
Сообщений: 4
Спасибо огромное, работает
8 июл 09, 06:37    [7389356]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить