Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Просьба о помощи в составлении запроса / 12 сообщений из 12, страница 1 из 1
07.07.2016, 13:04:14
    #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
07.07.2016, 13:09:50
    #39269692
Просьба о помощи в составлении запроса
Познающий,

партишн аутер джойн ?
...
Рейтинг: 0 / 0
07.07.2016, 13:23:27
    #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
07.07.2016, 13:23:37
    #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
07.07.2016, 13:24:52
    #39269723
nata44845
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба о помощи в составлении запроса
Мастер Ломастер,

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

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

но фокус с ON 1=1 - меня удивляет... КАК это работает?
надо читать маны...
...
Рейтинг: 0 / 0
07.07.2016, 13:29:30
    #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
07.07.2016, 13:31:42
    #39269738
nata44845
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба о помощи в составлении запроса
Познающий,

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

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

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

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


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