Объединение двух таблиц с сгруппированными элементами в Oracle SQL - PullRequest
1 голос
/ 18 марта 2019

Итак, у меня есть следующие две таблицы (упрощенно):

Таблица 1: ПАПКИ

ID    | DESC_FOLDER | TEMPLATE_ID
---------------------------------
...   | ...         | ...
20    | Folder 1    | 52
21    | Folder 2    | 55
...   |             | ...

Таблица 2: ШАБЛОНЫ

ID    | DESC_TEMPLATE | GROUP
-----------------------------
...   | ...           | ...
51    | Template 1    | abc
52    | Template 2    | abc
53    | Template 3    | abc
54    | Template 4    | abc
55    | Template 5    | NULL
...   | ...           | ...

Результатом должен быть список со всеми шаблонами и соответствующей им папкой.

Ожидаемый результат:

DESC_TEMPLATE | DESC_FOLDER 
---------------------------
Template 1    | Folder 1  
Template 2    | Folder 1
Template 3    | Folder 1
Template 4    | Folder 1  
Template 5    | Folder 2

У меня проблемы с сгруппированными шаблонами, поскольку к папке подключен только один шаблон из каждой группы. Следующая команда sql, очевидно, возвращает только шаблоны, непосредственно подключенные к папке. Как расширить мою команду, чтобы получить желаемый результат?

Select 
    T.DESC_TEMPLATE, 
    F.DESC_FOLDER
from 
    TEMPLATES T, 
    FOLDERS F
where
    T.ID = F.TEMPLATE_ID

Большое спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Я думаю, что оконная функция решит вашу проблему:

Select T.DESC_TEMPLATE, 
       MAX(F.DESC_FOLDER) OVER (PARTITION BY t.GROUP) as DESC_FOLDER
from TEMPLATES T left join
     FOLDERS F
     on T.ID = F.TEMPLATE_ID;
0 голосов
/ 18 марта 2019
where
    T.ID = F.TEMPLATE_ID (+)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...