powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Просьба о помощи в составлении запроса
12 сообщений из 12, страница 1 из 1
Просьба о помощи в составлении запроса
    #39269685
Познающий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!
есть таблица А с такими данными:
point_name param_name1 paramA1 paramB1 paramE2 paramA2 paramB2 paramC2 paramD2 paramE2 paramF

и другая таблица В сданными вида:
param_nameparamAparamBparamСparamDparamEparamFparamG


надо получить таблицу С вида:
point_name param_name1 paramС1 paramD1 paramF1 paramG2 paramG

т.е. это список точек с не выставленными параметрами из общего списка доступных параметров.
...
Рейтинг: 0 / 0
Просьба о помощи в составлении запроса
    #39269692
Познающий,

партишн аутер джойн ?
...
Рейтинг: 0 / 0
Просьба о помощи в составлении запроса
    #39269721
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если по быстрому и не элегантно, то так:

Select A.point_name,B.param_name from B join A ON 1=1
MINUS
Select A.point_name,A.param_name from A

Если параметров мало вполне прокатит.
...
Рейтинг: 0 / 0
Просьба о помощи в составлении запроса
    #39269722
Познающий,

Код: 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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
  1  with query as (select 1 i,'paramA' n from dual
  2  union all
  3  select 1,'paramB' from dual
  4  union all
  5  select 1,'paramE' from dual
  6  union all
  7  select 2,'paramA' from dual
  8  union all
  9  select 2,'paramB' from dual
 10  union all
 11  select 2,'paramC' from dual
 12  union all
 13  select 2,'paramD' from dual
 14  union all
 15  select 2,'paramE' from dual
 16  union all
 17  select 2,'paramF' from dual
 18  )
 19  select q.i,l.n from query q,
 20  (select 'paramA' n from dual
 21  union all
 22  select 'paramB' n from dual
 23  union all
 24  select 'paramC' n from dual
 25  union all
 26  select 'paramD' n from dual
 27  union all
 28  select 'paramE' n from dual
 29  union all
 30  select 'paramF' n from dual
 31  union all
 32  select 'paramG' n from dual
 33  ) l
 34* minus select * from query
SQL> /

         I N
---------- ------------------
         1 paramC
         1 paramD
         1 paramF
         1 paramG
         2 paramG
...
Рейтинг: 0 / 0
Просьба о помощи в составлении запроса
    #39269723
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мастер Ломастер,

Чую я, у него там не только 1 и 2
...
Рейтинг: 0 / 0
Просьба о помощи в составлении запроса
    #39269734
Познающий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nata44845,

да, параметров мало и прокатило....
блин, и чтоб я без вас всех делал)))))

но фокус с ON 1=1 - меня удивляет... КАК это работает?
надо читать маны...
...
Рейтинг: 0 / 0
Просьба о помощи в составлении запроса
    #39269735
Познающий, таки настаиваю на секционированном джойне:
Код: 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.
31.
32.
33.
34.
35.
36.
37.
--
-- Тестовые данные:
with
--
-- Таблица А:
  A as 
    (
      select 1 as point_name, 'paramA' as param_name from dual union all
      select 1 as point_name, 'paramB' as param_name from dual union all
      select 1 as point_name, 'paramE' as param_name from dual union all
      select 2 as point_name, 'paramA' as param_name from dual union all
      select 2 as point_name, 'paramB' as param_name from dual union all
      select 2 as point_name, 'paramC' as param_name from dual union all
      select 2 as point_name, 'paramD' as param_name from dual union all
      select 2 as point_name, 'paramE' as param_name from dual union all
      select 2 as point_name, 'paramF' as param_name from dual
    )
--
-- Таблица В:
, B as
  (
      select 'paramA' as param_name from dual union all
      select 'paramB' as param_name from dual union all
      select 'paramC' as param_name from dual union all
      select 'paramD' as param_name from dual union all
      select 'paramE' as param_name from dual union all
      select 'paramF' as param_name from dual union all
      select 'paramG' as param_name from dual
   )
--
-- Основной запрос:
select *
  from b 
  left join a partition by (a.point_name)
    on a.param_name = b.param_name
 where A.param_name is null
 order by a.point_name, b.param_name
...
Рейтинг: 0 / 0
Просьба о помощи в составлении запроса
    #39269738
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Познающий,

Так как условие 1=1 выполняется всегда, он тупо делает декартово произведение 1 таблицы на 2, то есть значения из таблицы B умножает на значения таблицы A, и берет все множество комбинаций.

Я бы там тогда еще distinct поставила в 1 таблице.
...
Рейтинг: 0 / 0
Просьба о помощи в составлении запроса
    #39269740
nata44845 from B join A ON 1=1
оригинальное написание CROSS JOIN-а :)
...
Рейтинг: 0 / 0
Просьба о помощи в составлении запроса
    #39269744
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Познающийно фокус с ON 1=1 - меня удивляет... КАК это работает?
надо читать маны...читать надо, но не про приемы тех, кто сам не читает про стандартные типы джоинов.
...
Рейтинг: 0 / 0
Просьба о помощи в составлении запроса
    #39269745
Познающий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

оки!
и Ваш вариант годный.
особливо с оглядкой на будущее наполнение таблиц.
принимается, т.к. есть другая сходная задача, где этот код станет частью большего....
...
Рейтинг: 0 / 0
Просьба о помощи в составлении запроса
    #39269759
nata44845Мастер Ломастер,

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


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