Hallo,
ich bin auf der Suche nach einer performanten Möglichkeit, 2 Tabellen zu in Oracle zu kombinieren. Dabei hab ich das Problem, dass ich aus Tabelle 2 Zeileninhalte in verschiedene Spalten kopieren muss:
Verwendet wird Oracle >= Version 9.
Als Anbindung zur Datenbank nutze ich ADO
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| ID, Wert1, Wert2, WertN 0| ABC| ASD| 12N| 1| BCD| ASE| 13N|
ID, Name, Wert 0| XX1| AB0 0| XX2| AB1 1| XX1| 123 1| XX2| 456
ID, Wert1, Wert2, WertN, XX1, XX2 0| ABC| ASD| 12N| AB0| AB1 1| BCD| ASE| 13N| 123| 456 |
Das ganze bewegt sich in einer Größenordnung von 20.000 Einträgen in Tabelle 1 und etwa 20-60 Attributen pro Eintrag in Tabelle2, wobei die genau Anzahl unterschiedlich sein kann.
Die Inhalte der Spalte "Name" sind mir vor dem Auslesen bekannt. Mein letzter Ansatz sah daher so aus:
SQL-Anweisung
1: 2: 3: 4: 5: 6:
| SELECT * FROM "Tabelle1" A JOIN (SELECT DISTINCT "ID", V1 AS "XX1", V2 AS "XX2" FROM "Tabelle2", (SELECT "WERT" AS V1,"ID" AS ID1 FROM "Tabelle2" WHERE "WERT"='XX1'), (SELECT "WERT" AS V2,"ID" AS ID2 FROM "Tabelle2" WHERE "WERT"='XX2') WHERE "ID"=ID1 AND ID1=ID2) B ON A."ID" = B."ID" |
Sprich, für jede Spalte die ich anhängen wollte, kam ein SubQuery dazu.. Das ist allerdings ziemlig langsam.
Mit meinen heldenhaften SQL-Kentnissen bin ich nu auch am Ende
Daher: Gibt es noch einen Besseren weg, abgesehen davon, die beiden Tabellen separat auszulesen und programmintern zusammenzuführen?
Nächtliche Grüße vom Biergeneral