Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Создание представлении с двух таблиц / 10 сообщений из 10, страница 1 из 1
19.07.2019, 08:15
    #39839028
bkolubenka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание представлении с двух таблиц
Добрый день,

Нужно создать Oracle View основываясь на две таблицы. В них есть колонка первичного ключа, и некоторые из них совпадает в обеих сторонах. Так мне нужно чтобы у тех у кого совпало первичные ключи брали с одной таблицы если не совпали брали уже с другой.

Как можно это реализовать? Вложил примерную схему
...
Рейтинг: 0 / 0
19.07.2019, 09:05
    #39839043
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание представлении с двух таблиц
outer join
...
Рейтинг: 0 / 0
19.07.2019, 09:44
    #39839056
Oleg M.Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание представлении с двух таблиц
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
with t1 as (
select 1 pk, '111111111111' data from dual
union all
select 2 pk, '222222222222' data from dual
union all
select 3 pk, '333333333333' data from dual
union all
select 4 pk, '444444444444' data from dual
),
t2 as 
(select 2 pk,'xxxxxxxxxxxxx' data from dual)

select t1.pk,nvl(t2.data,t1.data) data from t1
left join t2 on t1.pk=t2.pk  
order by 1;

PK	DATA
-----  ------------------
1	111111111111	
2	xxxxxxxxxxxxx	
3	333333333333	
4	444444444444
...
Рейтинг: 0 / 0
19.07.2019, 09:51
    #39839061
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание представлении с двух таблиц
Oleg M.Ivanov
Код: plsql
1.
nvl(t2.data,t1.data) data 

Некорректно.
...
Рейтинг: 0 / 0
19.07.2019, 15:03
    #39839272
Создание представлении с двух таблиц
bkolubenka,

Вам AmKad правильно подсказал. вот пример
Код: plsql
1.
2.
3.
4.
select * from (select rownum  id, 'a' v from dual connect by rownum<=10) t1
               left outer join
              (select rownum+5  id, 'b' from dual connect by rownum<=10) t2
on t1.id=t2.id
...
Рейтинг: 0 / 0
19.07.2019, 16:37
    #39839382
Oleg M.Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание представлении с двух таблиц
-2-Некорректно.
В чем некорректность? Человек попросил в поле DATA выводить значения из другой таблицы при совпадении ключей и оно работает.

Можно и с decode это же самое реализовать, если NVL не устраивает:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
with t1 as (
select 1 pk, '111111111111' data from dual
union all
select 2 pk, '222222222222' data from dual
union all
select 3 pk, '333333333333' data from dual
union all
select 4 pk, '444444444444' data from dual
union all
select 5 pk, '555555555555' data from dual
),
t2 as 
(select 2 pk,'aaaaaaaaaaaa' data from dual
union all
select 5 pk, 'bbbbbbbbbbbb' data from dual
union all
select 6 pk, 'cccccccccccc' data from dual
)

select t1.pk,decode(t2.pk,t1.pk,t2.data,t1.data) data from t1
left join t2 on t1.pk=t2.pk  
order by 1;

PK	DATA
----   -----------------
1	111111111111	
2	aaaaaaaaaaaa	
3	333333333333	
4	444444444444	
5	bbbbbbbbbbbb
...
Рейтинг: 0 / 0
22.07.2019, 15:44
    #39839999
bkolubenka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание представлении с двух таблиц
Oleg M.Ivanov-2-Некорректно.
В чем некорректность? Человек попросил в поле DATA выводить значения из другой таблицы при совпадении ключей и оно работает.

Можно и с decode это же самое реализовать, если NVL не устраивает:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
with t1 as (
select 1 pk, '111111111111' data from dual
union all
select 2 pk, '222222222222' data from dual
union all
select 3 pk, '333333333333' data from dual
union all
select 4 pk, '444444444444' data from dual
union all
select 5 pk, '555555555555' data from dual
),
t2 as 
(select 2 pk,'aaaaaaaaaaaa' data from dual
union all
select 5 pk, 'bbbbbbbbbbbb' data from dual
union all
select 6 pk, 'cccccccccccc' data from dual
)

select t1.pk,decode(t2.pk,t1.pk,t2.data,t1.data) data from t1
left join t2 on t1.pk=t2.pk  
order by 1;

PK	DATA
----   -----------------
1	111111111111	
2	aaaaaaaaaaaa	
3	333333333333	
4	444444444444	
5	bbbbbbbbbbbb




Все верно спасибо. И я тоже наконец то додумался сделать так тоже работает

CREATE OR REPLACE FORCE VIEW VIEW_NAME
(
PK_ID,
DATA
)
BEQUEATH DEFINER
AS
SELECT PK_ID,
DATA
FROM TABLE1 t.1
WHERE t.1.PK_ID NOT IN (SELECT PK_ID
FROM TABLE2)
UNION
SELECT PK_ID,
DATA
FROM TABLE2 t2
...
Рейтинг: 0 / 0
22.07.2019, 16:17
    #39840025
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание представлении с двух таблиц
Oleg M.IvanovМожно и с decode это же самое реализовать, если NVL не устраивает:


Вопрос был "Так мне нужно чтобы у тех у кого совпало первичные ключи брали с одной таблицы если не совпали брали уже с другой " а твое решение для "Так мне нужно чтобы у тех у кого совпало первичные ключи брали с второй таблицы если не совпали брали уже с первой ". Хотя скорее всего TC неудачно сформулировал вопрос.

SY.
...
Рейтинг: 0 / 0
22.07.2019, 17:39
    #39840093
Oleg M.Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание представлении с двух таблиц
SYВопрос был "Так мне нужно чтобы у тех у кого совпало первичные ключи брали с одной таблицы если не совпали брали уже с другой " а твое решение для "Так мне нужно чтобы у тех у кого совпало первичные ключи брали с второй таблицы если не совпали брали уже с первой ". Хотя скорее всего TC неудачно сформулировал вопрос.

Ну так это "поместать менями" имена таблиц в decode, делов то... Главное, наводка есть. Если честно, то из рисунка я понял как раз, как и реализовал. Надо было, конечно, ТС для ясности картины представить тестовые данные с желаемым результатом, но, судя по кол-ву постов, опыта у него тут маловато.
...
Рейтинг: 0 / 0
23.07.2019, 08:12
    #39840292
bkolubenka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание представлении с двух таблиц
Oleg M.Ivanov,

Накосячил с рисунком. Спасибо буду учиться
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Создание представлении с двух таблиц / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]