Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   sqlite 3 ... Abfrage mit zwei Datenbanken (https://www.delphipraxis.net/171975-sqlite-3-abfrage-mit-zwei-datenbanken.html)

Maskenschlitzer 5. Dez 2012 10:09

Datenbank: sqlite • Version: 3 • Zugriff über: Zeos

sqlite 3 ... Abfrage mit zwei Datenbanken
 
Moin,

ich habe folgendes Problem:

Zurzeit besitze ich zwei getrennte Datenbanken (welche auch weiterhin getrennt bleiben sollen).

Nun zu meiner Frage, gibt es eine Möglichkeit mit einer tzquery, beide Datenbanken (Verbindung über tzconnection) anzusprechen?

Ich bedanke mich schonmal im vorraus und wenn die Problemstellung unklar erscheint bitte melden :D

thx

MfG
Maske

Bernhard Geyer 5. Dez 2012 10:25

AW: sqlite 3 ... Abfrage mit zwei Datenbanken
 
Nach 3 Sekunden googlen nach "sqlite join other database" findet man z.B. das hier:

http://stackoverflow.com/questions/6...rent-databases

DeddyH 5. Dez 2012 10:34

AW: sqlite 3 ... Abfrage mit zwei Datenbanken
 
Crossposts bitte künftig untereinander verlinken.

p80286 5. Dez 2012 11:41

AW: sqlite 3 ... Abfrage mit zwei Datenbanken
 
Aber klar doch,
für jede DB eine Connection, die wird dann in der Query ausgetauscht.

Gruß
K-H

Maskenschlitzer 5. Dez 2012 11:55

AW: sqlite 3 ... Abfrage mit zwei Datenbanken
 
@Bernhard Geyer: Vielen Dank, werde es gleichmal testen ;)

@p80286: Ich muss auf beide Datenbanken gleichzeitig zugreifen können.

Ich benötige eine Komponente oder eine Möglichkeit, bei welcher beide Datenbanken enthalten sind und auf die ich dann eine select Abfrage machen kann um somit Information von BEIDEN Datenbanken erhalte.

:)

Maskenschlitzer 5. Dez 2012 12:33

AW: sqlite 3 ... Abfrage mit zwei Datenbanken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ist ein Bild wie es aussehen sollte^^

EgonHugeist 5. Dez 2012 21:38

AW: sqlite 3 ... Abfrage mit zwei Datenbanken
 
Hast du Bernhards Vorschlag von stackoverflow schon getestet? So, wie ich die Syntax interpretiere solltest du quasi eine Verbindung mit sqlite-datenbank-x öffnen und die weiteren via sql als Schema mit Alias einbinden. Somit, wenn das funktioniert, sollte deine Abfrage mit der TZQuery möglich sein. Wäre interessant zu wissen, ob das funktioniert...

Maskenschlitzer 7. Dez 2012 07:33

AW: sqlite 3 ... Abfrage mit zwei Datenbanken
 
Moin,

ich habe den Lösungsvorschlag von Bernhard Geyer versuchen wollen, allerdings habe ich auf die schnelle keine Komponente gefunden mit der ich es umsetzen konnte (möglicherweise ist es aber mit einem ZSQLProzessor möglich).
Kann also leider nichts zu der Funktionalität sagen.

Allerdings habe ich nach vielen Versuchen einen anderen Weg gefunden mein Problem zu lösen :-D:

ich habe mir 2 ZConnection genommen und die jeweils benötigten Datenbanken eingetragen. Anschließend nahm ich eine ZConnectionGroup, in welche ich die 2 ZConnection's mit folgenden Codezeilen hinzufügte:
Delphi-Quellcode:
ZConnectionGroup1.InsertComponent(ZConnection1);
ZConnectionGroup1.InsertComponent(ZConnection2);
Daraufhin nahm ich eine ZGroupedConnection, der ich als "ConnectionGroup"- Attribut die ZConnectionGroup zuwies.

Nun ist es möglich, wenn man seiner ZQuery als "Connection"- Attribut die ZGroupedConnection zuweist, eine Abfrage auf beide Datenbanken zu machen.:thumb:

Test SQL- String meiner Abfrage in dem ZQuery "SQL"- Attribut:
Code:
SELECT
 * 
FROM
Tabelle_aus_Datenbank1 a
LEFT JOIN
Tabelle_aus_Datenbank2 b
ON
b.ID = a.ID
Trotzdem vielen Dank für die Antworten :wink:

Graf Gustav 28. Feb 2019 17:48

AW: sqlite 3 ... Abfrage mit zwei Datenbanken
 
Der Thread ist ja ein paar Donnerstage alt, aber der letzte Beitrag von Maske ist der einzig stabile, den ich auch heute noch zu dem Thema TZGroupedConnection finden konnte.(sogar ein Verweis im ZeosLib-Board von 2013 : 'I know one german uses the TZGroupedConnection and it's Connection-Groups to join two SQLite databese with one TZQuery-Object....')
Ich habe einige MySQL-Datenbanken, die auf einem MariaDB-Server zuhause sind und von denen ich zwei mit einem SQL-Statement erreichen muss.
Beim Nachvollziehen von Maskes Vorgehensweise musste ich die Server-Parameter in der TZGroupedConnection angeben, sie wurden nicht aus den TZConnections genommen. (Was nebenbei bedeutet, dass die DB auf dem selben Server liegen müssen).
Damit hat dann die Server-Verbindung geklappt, aber die DB-Namen hatte ich bisher immer in den TZConnections angegeben...
Also die DB-Namen in den TZConnections weggelassen und und einfach im SELECT die <DB.Table>-Syntax-benutzt - klappt.
Wozu dann eigentlich die TZGroupedConnection?
Ja, es ist irgendwie ein Treppenwitz, zumindest in in meiner Konstellation (ZeosLib 7.2.1, MySQL/MariaDB 5) funktioniert folgendes einwandfrei:
1 TZConnection, 1 TZ[ReadOnly]Query ohne DB-Angabe und ein 'SELECT * FROM db1.table JOIN db2.table ON ...'
Es wurden zu diesem Thema einige, z.T. sehr weitgehende Diskussionen geführt.
Vielleicht ist es für den einen oder anderen hilfreich, wie einfach das in der hier genannten Umgebung zu realisieren ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 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