powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Создание представлении с двух таблиц
10 сообщений из 10, страница 1 из 1
Создание представлении с двух таблиц
    #39839028
bkolubenka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

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

Как можно это реализовать? Вложил примерную схему
...
Рейтинг: 0 / 0
Создание представлении с двух таблиц
    #39839043
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
outer join
...
Рейтинг: 0 / 0
Создание представлении с двух таблиц
    #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
Создание представлении с двух таблиц
    #39839061
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg M.Ivanov
Код: plsql
1.
nvl(t2.data,t1.data) data 

Некорректно.
...
Рейтинг: 0 / 0
Создание представлении с двух таблиц
    #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
Создание представлении с двух таблиц
    #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
Создание представлении с двух таблиц
    #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
Создание представлении с двух таблиц
    #39840025
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg M.IvanovМожно и с decode это же самое реализовать, если NVL не устраивает:


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

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

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

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


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