2016-05-09 2 views
0

Ich habe eine Tabelle A, wie unten:Abfrage fusionieren Daten nach Adreßtyp

ID Name Age 
1 A  18 
2 B  19 

Diese Tabelle hat einen Eins-zu-viele-Mapping mit der Adresstabelle.

ID ParentID AddressType ALine1 ALine2 State City Country 
10  1 Mail  AAA AAA AAB CCC CDCD 
11  1 Home  BBB BBA BAB CAC CFCF 
12  2 Mail  CAV VAC CSC DFS DDDC 

Ich brauche die gewünschte Ausgabe zu erhalten:

Name Age Address1Type ALine1 ALine2 State1 City1 Country1 Address2Type A2Line1 A2Line2 State2 City2 Country2 
---- --- ------------ ------ ------ ------ ----- -------- ------------ ------- -------- ------ ----- -------- 
A  18 Mail   AAA AAA AAB CCC CDCD  Home   BBB  BBA  BAB CAC CFCF 
B  19 Mail   CAV VAC CSC DFS DDDC  null   null null  null null null 

Ich bin in der Lage, sie zu kombinieren, aber mehrere Datensätze für denselben Namen bekommen. Wie kann ich die Ausgabe erhalten, die ich brauche?

+0

Was ist die SQL-Anweisung Sie versucht haben? – lit

+0

'Zusammenführen' ist eine DML-Operation zum Einfügen/Aktualisieren von Daten in einer Tabelle. meinst du das wirklich oder suchst du nur und willst ein result set, das die daten aus beiden tabellen kombiniert? –

+0

Ich frage nur Tabellen und möchte eine Ergebnismenge, die Daten aus beiden Tabellen kombiniert. –

Antwort

0

Versuchen Sie folgendes:

SELECT   parent.Name, 
       parent.Age, 
       mailInfo.*, 
       homeInfo.* 
FROM   parent 
LEFT OUTER JOIN addresses AS mailInfo 
      ON parent.ID = mailInfo.ParentID 
      AND mailInfo.AddressType = 'Mail' 
LEFT OUTER JOIN addresses AS homeInfo 
      ON parent.ID = homeInfo.ParentID 
      AND mailInfo.AddressType = 'Home'; 
+0

Das funktioniert natürlich nur, wenn Sie nur die Heimat- und Mailadressen suchen –

+0

Vielen Dank Robert es hat geholfen !! –

+0

Könnten Sie bitte die Antwort akzeptieren? Vielen Dank –