# Select über mehrere Datenbanksysteme



## Saphord (12. Dez 2007)

Hallo!

Ich habe ein kleines Problem:

Ich muss ein Select über mehrere Tabellen die in Unterschiedlichen Datenbanksystemen liegen absetzen. Es ist zwingend notwendig, dass nur eine Query abgesetzt wird.

Beispiel:

Datenbank A (Oracle):
Tabelle Kundendaten
KdNr    KdName    KdKat
1    Test1    10
2    Test2    10
3    Test3    11
4    Test4    12


Datenbank B (DB2):
Tabelle DatenZuKunden
KdKat    Bezeichnung
10    Kategorie1
11    Kategorie2
12    Kategorie3

Ist zwar ein blödes beispiel, aber ich muss aus den beiden tabellen mit einem Select die Daten rauskriegen.

Problem: Wie kann ich das meiner connection beibringen? Da kann ich m.W.n. ja nur eine DB hinterlegen.
Das Anlegen eines DB-Links innerhalb von Oracle oder DB/2 auf die andere Datenbank sind leider auch nicht erwünscht.

Gibt es hierfür irgendeine Lösungsmöglichkeit?

Danke für Eure Hilfe bereits jetzt.


----------



## maki (12. Dez 2007)

> Ich muss ein Select über mehrere Tabellen die in Unterschiedlichen Datenbanksystemen liegen absetzen. Es ist zwingend notwendig, dass nur eine Query abgesetzt wird.


Geht nicht.


----------



## ms (12. Dez 2007)

Wer kommt denn auf solch lustige Ideen?
Das fällt ja schon fast unter Mobbing.

ms


----------



## The_S (12. Dez 2007)

maki hat gesagt.:
			
		

> Geht nicht.



Doch, geht schon. Z. B. mit dem DataJoiner von IBM 

http://safari.oreilly.com/0738428485/ch27lev1sec10

@ms warum mobbing und lustige Ideen?


----------



## maki (12. Dez 2007)

> Doch, geht schon. Z. B. mit dem DataJoiner von IBM


Man lernt ja nie aus.

Aber, ich stelle mir da schon ein paar Fragen, zB. über Aufwand&Nutzen?

Im Endeffekt werden dann doch wieder mehrere Abfragen gestartet und die Ergebnisse gemischt, das kann man doch auch selbst machen ohne hundertausende Euros an IBM zu zahlen um dann von IBM abhängig zu sein.


----------



## AlArenal (12. Dez 2007)

maki hat gesagt.:
			
		

> Im Endeffekt werden dann doch wieder mehrere Abfragen gestartet und die Ergebnisse gemischt, das kann man doch auch selbst machen ohne hundertausende Euros an IBM zu zahlen um dann von IBM abhängig zu sein.



Der Frager will ne Oracle und ne DB2 abfragen. Die Chancen stehen nicht schlecht, dass das Geld schon längst geflossen, die Abhängigkeiten bereits geschaffen sind


----------



## ms (12. Dez 2007)

maki hat gesagt.:
			
		

> Im Endeffekt werden dann doch wieder mehrere Abfragen gestartet und die Ergebnisse gemischt, das kann man doch auch selbst machen ohne hundertausende Euros an IBM zu zahlen um dann von IBM abhängig zu sein.


Seh ich auch so.
Man kann natürlich eine eigene Datasource schreiben die letztendlich nichts anderes macht.
Aber das war ja explizit nicht erwünscht.

ms


----------



## Saphord (12. Dez 2007)

Der Kunde ist halt König, und der will das halt so. Wie das leider immer wieder ist, kann man da nicht dran diskutieren. 

Die aktuelle "Lösung" sieht auch gut aus: Die haben auf ihre zig Datenbanksysteme ODBC-Treiber eingerichtet, dann unter MS-Access die Tabellen verknüpft und dann kann man da wie durch ein Wunder Abfragen über mehrere Systeme hinweg absenden. Warum also was ändern was doch geht ...

Nur wollen die jetzt die Abfragen über ein Wb-Portal starten und dort ihre Querys eingeben (bzw. vordefinierte wählen) und ausführen, also ein kleines "SQL-Tool" (Grundsätzlich ähnlich zum Toad für Oracle).

Evtl. hilft es mir ja, wenn ich eine eigene Datasource schreibe, da muss ich mal rumtüfteln 

LG
Saphord


----------



## Guest (12. Dez 2007)

Oder mach es genauso Dreckig wie bisher: Leg eine Dummy-Access DB mit allen Verknüpften Tabellen an, auf diese wiederum einen ODBC-Eintrag und dann sollte es funzen ...


----------



## ms (12. Dez 2007)

Anonymous hat gesagt.:
			
		

> Oder mach es genauso Dreckig wie bisher: Leg eine Dummy-Access DB mit allen Verknüpften Tabellen an, auf diese wiederum einen ODBC-Eintrag und dann sollte es funzen ...





			
				Hobbit_Im_Blutrausch hat gesagt.:
			
		

> @ms warum mobbing und lustige Ideen?


Und jetzt frag mich das nochmal!  :? 

ms


----------



## ARadauer (12. Dez 2007)

> Wer kommt denn auf solch lustige Ideen?
> Das fällt ja schon fast unter Mobbing.



ich hatte das auch mal. Eine inhouse Warenwirtschaft und eine online shop Datebank.
Ich habs aber dann über zwei abfragen gelöst


----------



## The_S (12. Dez 2007)

Nur weil das bisher äußerst hässlich gelöst ist, heißt das noch lange nicht, dass ein Select über mehrere DBMS grundsätzlich schlecht ist. Gibt dafür auch einige praktische Verwendungszwecke (siehe z. B. ARadauer).


----------



## ms (12. Dez 2007)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Nur weil das bisher äußerst hässlich gelöst ist, heißt das noch lange nicht, dass ein Select über mehrere DBMS grundsätzlich schlecht ist. Gibt dafür auch einige praktische Verwendungszwecke (siehe z. B. ARadauer).


Sagt ja niemand, dass das schlecht ist.
Nur mit den gegebenen Mitteln und vor allem den Einschränkungen ist es schlichtweg nicht möglich.

Abgesehen davon ist mir gerade meine Zeit, die ich mit Access als Multiuserdatenbankapplikation auf einem Netzwerkshare verbringen durfte, wieder hochgekommen.

ms


----------



## The_S (12. Dez 2007)

hehe, nix gegen das gute alte Access  :lol:


----------



## robertpic71 (14. Dez 2007)

Die Funktionalität der "verknüpften Tabellen" gibt es auch außerhalb on Access, in z.B. der Datenbank H2. Hier ein Auszug aus der H2-Doku:



> CREATE LINKED TABLE
> 
> CREATE LINKED TABLE [IF NOT EXISTS]
> name(driverString, urlString,
> ...



In beiden Fällen (H2, Access) muss man aber damit rechnen, dass die Tabellen irgendwo gecacht werden - was wohl auch nicht anders geht. Bei großen Datenbeständen könnte das zum Problem werden. Die einzige Alternative wären wohl überarbeitete Abfragen, wo der kleinere Datenbestand auf die jeweils andere Datenbank in einer temporären Datei gespeichert wird.

/Robert


----------

