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

Откуда:
Сообщений: 221
Не подскажите как сделать следующие:

Есть таблица MAIN например |ID| COD1| COD2|
| 1| 1 | 2 |
|2 | 2 | 3 |

И есть таблица CODES |ID_C| NAME|
| 1 | а |
| 2 | б |
| 3 | в |

Какой надо написать запрос чтобы получить следующие

|ID| COD1| COD2|NAME1|NAME2|
| 1| 1 | 2 | а | б |
|2 | 2 | 3 | б | в |
31 авг 09, 09:25    [7595864]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
SELECT m.ID,m.COD1,m.COD2,c1.NAME[NAME1],c2.NAME[NAME2]
FROM MAIN m
JOIN CODES c1 ON m.COD1=c1.ID_C
JOIN CODES c2 ON m.COD2=c2.ID_C;
Вообще-то, это азбука...
31 авг 09, 09:32    [7595892]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL запрос  [new]
Anddros
Member

Откуда:
Сообщений: 1077
Извращенный вариант с 1 join:
select id, cod1, cod2, max(case when cod1=id_c then name end) name1, max(case when cod2=id_c then name end) name2
from @main
inner join @codes on id_c in (cod1, cod2)
group by id, cod1, cod2
:)

В большинстве случаев будет уступать по скорости 'азбучному' варианту. :)
31 авг 09, 09:39    [7595923]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL запрос  [new]
Chukis
Member

Откуда:
Сообщений: 221
Спасибо, но этот вариант, я так понимаю, не будет работать,
если, например, в поле cod2 нет значения. Он возвращает только строки в которых оба поля cod заполнены в таблице MAIN
31 авг 09, 09:49    [7595998]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL запрос  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Chukis
Сне будет работать, если, например, в поле cod2 нет значения
Использование соединений
31 авг 09, 09:59    [7596035]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить