AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Konsolidieren zweier Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

Konsolidieren zweier Tabellen

Ein Thema von barnti · begonnen am 3. Apr 2008 · letzter Beitrag vom 3. Apr 2008
Antwort Antwort
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#1

Konsolidieren zweier Tabellen

  Alt 3. Apr 2008, 12:39
Datenbank: Oracle • Version: 9 • Zugriff über: ODBC/DB-Link
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!
Gruß,

Barnti
  Mit Zitat antworten Zitat
peterlepan

Registriert seit: 5. Jun 2006
Ort: Nordhausen
37 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Konsolidieren zweier Tabellen

  Alt 3. Apr 2008, 13:14
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
Peter Tabatt
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Konsolidieren zweier Tabellen

  Alt 3. Apr 2008, 13:37
Hallo Peter,
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,
Gruß,

Barnti
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:46 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