Ho scritto una soluzione al problema usando PL/SQL e SQL e non posso fare a meno di pensare che potrebbe essere fatto al 100% in SQL, ma sto facendo fatica ad iniziare.Soluzione al problema in PL/SQL come apparire in SQL?
Qui è la struttura delle due tabelle (Se aiuta, gli script per creare loro sono alla fine della questione)
tabella T1 (chiave primaria è entrambe le colonne visualizzate)
ID TYPE
1 A
1 B
1 C
2 A
2 B
3 B
la colonna Tipo è una chiave esterna tabella T2, che contiene i seguenti dati:
tabella T2 (chiave primaria è Type)
Type Desc
A xx
B xx
C xx
Quindi, dato l'i dati nel T1 il risultato ho bisogno saranno:
Per ID 1 perché ha tutti i tipi nella tabella chiave esterna sarei tornato il letterale "All"
Per ID 2 perché ha due tipi Vorrei tornare "a & B" (notare il separatore)
E infine per ID 3, perché ha un tipo mi piacerebbe tornare solo "B"
Come promesso qui sono gli script per creare tutti gli oggetti menzionati.
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')
/
Hai intenzione di aggiungere altri tipi in t2? Non solo A, B e C? – mcpeterson
@mcpeterson: Grazie per il commento. I dati in t2 verranno corretti, con un totale di circa 5 righe –
La necessità di concatenazione di stringhe orientate al gruppo nega la possibilità di farlo in puro SQL. –