Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Konsolidieren zweier Tabellen (https://www.delphipraxis.net/111431-konsolidieren-zweier-tabellen.html)

barnti 3. Apr 2008 12:39

Datenbank: Oracle • Version: 9 • Zugriff über: ODBC/DB-Link

Konsolidieren zweier Tabellen
 
Hallo,

ich brauche mal eure Hilfe. Ich möchte zwei Tabellen konsolidieren. Die Struktur sieht folgendermaßen aus:

Tabelle1
Startnummer Endnummer
100 199
220 225
348 null
...

Die zweite Tabelle ist identisch in der Struktur. Ich bekomme nun täglich die zweite Tabelle via DB-Link gefüllt und möchte diese gegen Tabelle 1 konsolidieren. Jede Nummer, die in der Tabelle 2 steht und auch in Tabelle 1 soll als Ergebnis zurückgegeben werden. Einträge die nicht in Tabelle 1 vorkommen sollen dieser hinzugefügt werden.

Das Problem ist, dass die Nummern auch in den vorhandenen Blöcken vorkommen können. D.h. wenn ich in Tabelle 2 die nummer 222 habe, so kommt diese im Block 220 - 225 vor und ich möchte 222 daher als Ergebnis bekommen. Als weiteres kann in Tabelle 2 auch ein block vorkommen z.B. 99 - 120. In diesem Fall brauche ich die Schnittmenge als Ergebnis und muss die restlichen Zahlen der Tabelle hinzufügen.

So wie ich das im Moment betrachte muss ich einen solchen Algorithmus als PL/SQL in der DB hinterlegen? Gibt es Vorschläge von eurer Seite?

Danke!

peterlepan 3. Apr 2008 13:14

Re: Konsolidieren zweier Tabellen
 
Hallo!

Also allein vom Aufwand her würde ich das Problem mittels StoredProcedure, also PL/SQL lösen.
Mit einem einzelnen SQL-Statement lässt sich das ganze sowieso nicht realisieren und damit ist der Aufwand auf der Java-Seite schon relativ groß.
Zumindest die Konsolidierung solltest Du in einer Stored Procedure realisieren.
Eine Möglichkeit, die Du dabei noch hast, ist die gewünschte Datenmenge auch gleich von der Stored Procedure aufbereiten zu lassen, Stichwort ist hier ein sogenannter RefCursor.

Gruß

Peter

barnti 3. Apr 2008 13:37

Re: Konsolidieren zweier Tabellen
 
Hallo Peter,
Zitat:

Zitat von peterlepan
Also allein vom Aufwand her würde ich das Problem mittels StoredProcedure, also PL/SQL lösen.
Mit einem einzelnen SQL-Statement lässt sich das ganze sowieso nicht realisieren und damit ist der Aufwand auf der Java-Seite schon relativ groß.
Zumindest die Konsolidierung solltest Du in einer Stored Procedure realisieren.
Eine Möglichkeit, die Du dabei noch hast, ist die gewünschte Datenmenge auch gleich von der Stored Procedure aufbereiten zu lassen, Stichwort ist hier ein sogenannter RefCursor.

So habe ich mir das gedacht. Das Hauptproblem wird Performance sein: Ich muss bis zu 50 Mio records täglich gegen bis zu 100.000 konsolidieren.

Deinen Hinweis zu RefCursor habe ich mir angeschaut und schon ein wenig geforscht. Sieht nach einer guten Möglichkeit aus!

Vielen Dank für Deine Anregungen,


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz