powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Направьте на путь истинный
8 сообщений из 8, страница 1 из 1
Направьте на путь истинный
    #39588263
Фотография шК0ДЕР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Прошу совета.
Имеются две таблицы
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
with 
  tbl_1 as
 (select 1 as id, 1 as any_id from dual union all
  select 2, 1 from dual union all
  select 3, 3 from dual union all
  select 4, 2 from dual union all
  select 5, 2 from dual union all
  select 6, 2 from dual union all
  select 7, 6 from dual),
  tbl_2 as
 (select 1 as any_id, 100 as value from dual union all
  select 1, 150 from dual union all
  select 2, 250 from dual union all
  select 2, 250 from dual union all
  select 2, 260 from dual union all
  select 3, 325 from dual union all
  select 4, 444 from dual)


Как организовать выборку, объединив таблицы по any_id(1 к 1), чтобы в итоге получить
id any_id value
1 1 100
2 1 150
3 3 325
4 2 250
5 2 250
6 2 260
7 6

Джойны не канают что-то или понедельник слишком тяжелый...
...
Рейтинг: 0 / 0
Направьте на путь истинный
    #39588270
шК0ДЕР,

join on row_number() over()
...
Рейтинг: 0 / 0
Направьте на путь истинный
    #39588273
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
шК0ДЕРобъединив таблицы по any_id(1 к 1),STFF соединение по порядковому номеру
...
Рейтинг: 0 / 0
Направьте на путь истинный
    #39588410
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
шК0ДЕР,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
with 
  tbl_1 as
 (select 1 as id, 1 as any_id from dual union all
  select 2, 1 from dual union all
  select 3, 3 from dual union all
  select 4, 2 from dual union all
  select 5, 2 from dual union all
  select 6, 2 from dual union all
  select 7, 6 from dual),
  tbl_2 as
 (select 1 as any_id, 100 as value from dual union all
  select 1, 150 from dual union all
  select 2, 250 from dual union all
  select 2, 250 from dual union all
  select 2, 260 from dual union all
  select 3, 325 from dual union all
  select 4, 444 from dual)
select t1.id, t1.any_id, t2.value from (select t1.*
,  row_number() OVER (partition by any_id order by id) as rn from tbl_1 t1) t1 
join (select t2.* ,  row_number() OVER (partition by any_id order by any_id) as rn from tbl_2 t2) t2 on t1.any_id = t2.any_id and t1.rn = t2.rn
order by t1.id
...
Рейтинг: 0 / 0
Направьте на путь истинный
    #39588420
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dshedoo,

авторчтобы в итоге получить
-
id any_id value
1 1 100
2 1 150
3 3 325
4 2 250
5 2 250
6 2 260
7 6

....
stax
...
Рейтинг: 0 / 0
Направьте на путь истинный
    #39588560
Фотография шК0ДЕР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эхjoin on row_number() over()
ElicSTFF соединение по порядковому номеру
спасибо
...
Рейтинг: 0 / 0
Направьте на путь истинный
    #39588564
Фотография шК0ДЕР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dshedoo, почти верно. С LEFT JOIN`ом будет правильно
...
Рейтинг: 0 / 0
Направьте на путь истинный
    #39588586
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
шК0ДЕР,

full outer join

ps
tbl_1 меньше строк

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


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