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

Никак не допру, что нужно сделать:

DECLARE @a TABLE (a1 int)
DECLARE @b TABLE (b1 int, b2 int)

INSERT @a SELECT 1
INSERT @a SELECT 2
INSERT @a SELECT 3

INSERT @b SELECT 1, 1
INSERT @b SELECT 2, 1
INSERT @b SELECT 3, 1

SELECT *
FROM @a a
JOIN @b b
ON a.a1 = b.b1

SELECT a1, NULL
FROM @a
UNION ALL
SELECT b1, b2
FROM @b

Нужно, чтобы результат был как во втором селекте, но без использования UNION.
27 янв 06, 10:11    [2293199]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с JOINом  [new]
RENaissance
Member

Откуда: Муром->Москва
Сообщений: 10895

???
DECLARE @a TABLE (a1 int)
DECLARE @b TABLE (b1 int, b2 int)

INSERT @a SELECT 1
INSERT @a SELECT 2
INSERT @a SELECT 3

INSERT @b SELECT 1, 1
INSERT @b SELECT 2, 1
INSERT @b SELECT 3, 1

select
  a.a1,
  case
    when (tblRows.colRow = 2) then b.b2
  end col
from @a a
inner join @b b on
  a.a1 = b.b1
cross join (select 1 colRow
            union all
            select 2) tblRows
order by col, a.a1



Posted via ActualForum NNTP Server 1.3

27 янв 06, 10:18    [2293228]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с JOINом  [new]
Аффтар
Guest
Афигеть! Спасибо!
27 янв 06, 10:23    [2293242]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с JOINом  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

select
  isnull(a.a1, b.b1)
  , b.b1
from @a a
  full outer join @b b on
    1 = 0



Posted via ActualForum NNTP Server 1.3

27 янв 06, 10:28    [2293260]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с JOINом  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

очепятался:
select
  isnull(a.a1, b.b1)
  , b.b2
from @a a
  full outer join @b b on
    1 = 0



Posted via ActualForum NNTP Server 1.3

27 янв 06, 10:30    [2293266]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с JOINом  [new]
Аффтар
Guest
daw

очепятался:
select
  isnull(a.a1, b.b1)
  , b.b2
from @a a
  full outer join @b b on
    1 = 0



Posted via ActualForum NNTP Server 1.3


Ну это просто круто!
27 янв 06, 10:43    [2293325]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с JOINом  [new]
Карачаровец
Member

Откуда: Рязань
Сообщений: 134
А вот более общий случай замены объединения:

DECLARE @a TABLE (a1 int, a2 int)
DECLARE @b TABLE (b1 int, b2 int)

INSERT @a SELECT 1, 0
INSERT @a SELECT 2, 0
INSERT @a SELECT 3, 0

INSERT @b SELECT 1, 1
INSERT @b SELECT 2, 1
INSERT @b SELECT 3, 1


select case t.x3 when 0 then t.x1 else t.x3 end as col1,
case t.x3 when 0 then t.x2 else t.x4 end as col2
from (
select t1.x1, t1.x2, isnull(t2.x3, 0) as x3, t2.x4
from
(select a1 as x1, a2 as x2 from @a) t1
full join (select b1 as x3, b2 as x4 from @b) t2 on t1.x2 = t2.x4
) t
27 янв 06, 12:51    [2294202]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить