Решение проблемы в PL / SQL, как оно будет выглядеть в SQL?

Я написал решение проблемы с использованием PL / SQL и SQL, и я не могу избавиться от мысли, что это можно сделать на 100% в SQL, но я пытается начать работу.

Вот структура двух таблиц (если это поможет, сценарии для их создания находятся в конце вопроса)

Таблица t1 (первичный ключ отображается в обоих столбцах)

ID    TYPE
1     A
1     B
1     C

2     A
2     B

3     B

Столбец Тип - это внешний ключ к таблице T2, которая содержит следующие данные:

Таблица t2 (первичный ключ - Type)

Type    Desc
A       xx

B       xx

C       xx

Итак, учитывая данные в T1, мне нужен результат:

Для ID 1, поскольку он имеет все типы в таблице внешнего ключа, я бы вернул литерал "All"

Для идентификатора 2, поскольку он имеет два типа, я хотел бы вернуть «A и B» (обратите внимание на разделитель)

И, наконец, для идентификатора 3, поскольку он имеет один тип, я хотел бы вернуть только «B» "

Как и было обещано, вот скрипты для создания всех упомянутых объектов.

create table t2(type varchar2(1),
                description varchar2(100)
                )                
/

insert into t2
values ('A', 'xx')
/

insert into t2
values ('B', 'xx')
/

insert into t2
values ('C', 'xx')
/

alter table t2 add constraint t2_pk primary key (type)
/

create table t1 (id number(10),
                 type varchar2(1)
                 )
/

alter table t1 add constraint t1_pk primary key(id, type)
/

alter table t1 add constraint t1_fk foreign key (type) 
references t2(type)
/

insert into t1
values (1, 'A') 
/

insert into t1
values (1, 'B')
/

insert into t1
values (1, 'C')
/

insert into t1
values (2, 'A')
/

insert into t1
values (2, 'B')
/

insert into t1
values (3, 'B')
/
7
задан meagar 10 November 2010 в 21:07
поделиться