PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   SQL / Datenbanken (https://www.php-resource.de/forum/sql-datenbanken/)
-   -   [MySql] Wie Tabellen zweier Datenbanken Joinen? (https://www.php-resource.de/forum/sql-datenbanken/51927-mysql-wie-tabellen-zweier-datenbanken-joinen.html)

Quetschi 15-03-2005 14:17

[MySql] Wie Tabellen zweier Datenbanken Joinen?
 
Hallo Leute,

Google und Forumssuche hab ich ausführlich benutzt, find aber nicht so recht die passende Antwort.

Mein Problem ist das ich Daten aus 2 Tabellen die auf unterschiedlichen Datenbanken liegen abfragen (über PHP) muss.

Mit einem Join dürfte ich meines Wissens nach nicht weit kommen, soweit ich weis wird das bei MySql nicht datenbankübergreifend unterstützt.

Nun bin ich am überlegen wie ich das Problem Client-seitig (PHP) am besten umgehe. Ich hätte 2 Lösungsansätze weiß jedoch nicht welchem ich den Vorzug geben soll:

1. ich lese eine Tabelle komplett aus und lade sie als Temporäre HEAP-Tabelle in die andere Datenbank und führe hier erst den Join auf die 2. Tabelle aus wenn ich die eigentliche Abfrage ausführe.

2. Ich führe erst die eigentliche Abfrage aus und 'sammle' sozusagen die ID's der Ergebnisdatensätze und frage mit diesen ID's dann die 2. Tabelle ab.

Beide Lösungen sind meiner Meinung nach etwas ungelenk um nicht zu sagen unprofessionell, darum frage ich euch was ihr meint welches das kleinere Übel wäre???

Oder kennt jemand von euch einen professionelleren Weg??

Vielen Dank für euere Hilfe

Gruss
Quetschi

mrhappiness 15-03-2005 14:32

Re: [MySql] Wie Tabellen zweier Datenbanken Joinen?
 
Zitat:

Original geschrieben von Quetschi
Mit einem Join dürfte ich meines Wissens nach nicht weit kommen, soweit ich weis wird das bei MySql nicht datenbankübergreifend unterstützt.
Ausprobiert?

Shurakai 15-03-2005 14:33

Klar geht das mit nem Join....

SELECT * FROM datenbankname.tabellenname LEFT JOIN datenbankname2.tabellenname ON datenbankname2.tabellenname.spaltenname = datenbankname.tabellenname.spaltenname

Quetschi 15-03-2005 15:21

Danke für die Antworten :)

Auf das, dass man im Statement auch die Datenbanknamen mit angeben kann wär ich nie gekommen, weil keines meiner Bücher so etwas behandelt.

Allerdings klappt mir das jetzt noch nicht so recht.

Hier mal ein exemplarisches Codebeispiel wie das bei mir nun aussieht:

PHP-Code:

$db1 db_conn1();
$db2 db_conn2();
    
$query "SELECT * FROM db1.bw_adressen LEFT JOIN db2.pauschalen
ON db1.bw_adressen.ID = db2.pauschalen.ID_bw_adressen
WHERE db1.bw_adressen.ID = 8"
;

$res mysql_query($query); 

mysql_error() sagt mir folgendes:

Access denied for user: 'dbxxx@%' to database 'dbyyy'

Ich hab ja leider keinen Benutzer zur Verfügung mit dem ich auf beiden Datenbanken lesen könnte, sondern ich muss mit 2 Verbindungskennungen arbeiten.

eine der Verbindungskennungen bei mysql_query() zu verwenden bringt mich ja auch ned weiter und mehr als eine darf ich ja nicht angeben.

Gibts da trotzdem eine Möglichkeit??

Gruss
Quetschi

mrhappiness 15-03-2005 15:28

Na das sind ja ganz andere Voraussetzungen.

Wenn du keinen Benutzer hast, der auf beiden Datenbanken Leserechte besitzt, dann musst du dir wohl oder übel die Rechte besorgen, oder die Tabelle auslesen, als temp. Tabelle in die andere DB packen und dann joinen.

Hättest du aber auch ruhig früher schreiben können


P.S. Ich hab mal davon gehört, dass angeblich in Büchern nicht immer alles steht... :)

Quetschi 15-03-2005 15:35

Sorry, das war mir nicht von vornherein klar dass das Vorraussetzung ist. Hätt ich das gewusst wär ich wahrscheinlich gar ned hier gelandet :)

Mal sehen ob Strato (bitte kein Komentar ;) ) gewillt ist mir einen entsprechenden User einzurichten. Die Datenbanken würden schließlich auf dem gleichen Server (Business) liegen aber leider hab ich keine Möglichkeit die User selbst zu verwalten sonst wär ich eh längst anders vorgegangen.

Trotzdem Vielen Dank :) ein klein wenig schlauer bin ich ja wieder geworden. :cool:

Quetschi


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:34 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG