2009-04-23 16 views
0

Ich habe die folgende Situation.Generate Eltern-Datensatz aus Kind Datensätze

Im Daten aus einem externen System in Form bekommen

UserId Group Value 
1  Abc ..... 
1  Abc ..... 
1  Bcd ..... 
2  Abc ..... 

ich diese Daten in mein Schema massieren müssen, dh

Parent Table 
ID UserID Group Name 
1  1   Abc  User 1 - Abc data 
2  1   Bcd  User 1 - Bcd data 
3  2   Abc  User 2 - Abc data 

Child Table 
ParentID Value 
1   ..... 
1   ..... 
2   ..... 
3   ..... 

So 1 bis 1 zwischen dem Kind Daten ein dort und die Daten vom externen System. Das Problem ist, dass ich mit den Child-Daten am Start und muß eine Abfrage schreiben, die einen übergeordneten Datensatz basierend auf unterschiedliche Kombinationen von Benutzer-ID und Gruppen

+0

Bitte geben Sie immer explizit die verwendete Sprache/Technologie an. Ich nehme an, Sie verwenden SQL Server, also wäre schön, dies zu der Liste der Tags hinzuzufügen. Oder erwähne es in der Frage. –

Antwort

1
insert parent (userId, group, name) 
select distinct userId, group, concat("user ", userId, " - ", group, " data") 
from input_data; 

(wo es einen autoinkrementierenden ID)

dann:

insert child (parentId, value) 
select p.parentId, d.value 
from parent p 
inner join input_data d on p.user_id = d.user_id and p.group = d.group; 
0

Bedarf erstellen können eine Abfrage zu schreiben, die einen übergeordneten Datensatz erstellen können basierend auf unterschiedliche Kombinationen von Benutzer-ID und Gruppen

insert into parent(UserID, Group, Name) 
select distinct 
UserID, 
Group, UserID, 
'User ' || UserID || ' - ' || Group || ' data' 
from raw_input_data;