как склеить две таблицы

ShadowNev
Дата: 07.03.2007 12:52:07
Нужна помощь.

Есть две таблицы

id name1 id name2
1 aaa 1 eee
2 bbb 2 fff
2 ссс 3 ggg
3 ddd
Необходимо получить таблицу вида

id name1 name2
1 aaa eee
2 bbb fff
2 ccc
3 ddd ggg
dmidek
Дата: 07.03.2007 12:53:26
ShadowNev
Дата: 07.03.2007 12:56:43
SELECT id,
       name1,
       name2
  FROM t1 FULL OUTER JOIN t2 USING (id)
 WHERE id = 2;
возвращает тоже что и NATURAL
dmidek
Дата: 07.03.2007 13:06:52
Да пардон, немного не туда выстрелил ....

SQL> 
SQL> with tab1 as
  2  (select 1 id, 'aaa' name from dual
  3   union all
  4   select 2 id, 'bbb' name from dual
  5   union all
  6   select 2 id, 'ccc' name from dual
  7   union all
  8   select 3 id, 'ddd' name from dual
  9   ),
 10   tab2 as
 11   (select 1 id, 'qqq' name
 12    from dual
 13    union all
 14    select 2 id, 'www' name
 15    from dual
 16    )
 17   select id1,
 18          name1,
 19          decode(id1,
 20                 lag(id1) over(partition by id1 order by name1),
 21                 NULL,
 22                 name2)
 23     from (select tab1.id id1, tab1.name name1, tab2.name name2
 24             from tab1, tab2
 25            where tab1.id = tab2.id
 26            )
 27    order by 1, 2, 3
 28  /

       ID1 NAME1 DECODE(ID1,LAG(ID1)OVER(PARTIT
---------- ----- ------------------------------
         1 aaa   qqq
         2 bbb   www
         2 ccc   

SQL> 
Mexico
Дата: 07.03.2007 13:12:53
Если не знаешь value of the fields пример 100 строки??
как? хорошая задача. или нет??

1 aaa
2 bbb
3 ccc
4 eee
5 ---
100 zsdw

----------------------------------------------
Sorry, my russian is not so good as my spanish
dmidek
Дата: 07.03.2007 13:14:45
Mexico
Если не знаешь value of the fields пример 100 строки??
как? хорошая задача. или нет??

1 aaa
2 bbb
3 ccc
4 eee
5 ---
100 zsdw

----------------------------------------------
Sorry, my russian is not so good as my spanish


ИМХО дело совсем не в русском :-)
ShadowNev
Дата: 07.03.2007 13:30:56
чет не выходит на реальных таблицах :(
dmidek
Дата: 07.03.2007 13:36:02
ShadowNev
чет не выходит на реальных таблицах :(


Глядя в свой стеклянный шар, предполагаю, что проблема
с оконными partition by и order by
Mexico
Дата: 07.03.2007 13:46:35

CREATE TABLE AAA
(
  ID    NUMBER,
  NAME  VARCHAR2(30 BYTE)
)

CREATE TABLE BBB
(
  ID    NUMBER,
  NAME  VARCHAR2(30 BYTE)
)

SELECT id,
       aaa.name uno,
       bbb.name dos ,

       ( case when ( lag(bbb.name,1) over (order by id) ) <> bbb.name then bbb.name 
            when ( lag(bbb.name,1) over (order by id) ) = bbb.name then ''
			else bbb.name
            end ) as ew 
		
  FROM aaa  right JOIN bbb USING (id) group by aaa.name, bbb.name, id
  order by id




AAA
1 aaa
2 bbb
2 ccc
3 ddd

BBB
1 eee
2 fff
3 ggg


RESULT
1 aaa eee eee
2 bbb fff fff
2 ccc fff null
3 ddd ggg ggg

Сам предумал, есть идея??
только если BBB есть дубликат на счеть AAA не сделал
----------------------------------------------
Sorry, my russian is not so good as my spanish
Vladimir Sitnikov
Дата: 07.03.2007 14:33:23
dmidek
Да пардон, немного не туда выстрелил ....

Так чем же всё-таки full outer join не подходит?