2 Tabellen aus unterschiedlichen MySQL-DB´s verknüpfen?
Bernd Wagner
- datenbank
Hallo,
ich habe 2 Datenbanken, eine User-DB mit Userdaten und eine Spiele-DB welche u.a. eine Highscore-tabelle hat, welche aus 3 Feldern besteht: uid, spieler_id, punkte.
Die spieler_id stellt die Relation zur User-DB her, somit sind User-tabelle und Highscore-Tabelle 1:n über die spieler_id verknüpft.
Wenn ich nun eine Highscoreliste mit Usernamen etc. anzeigen möchte, würde ich gerne folgenden (abgespeckt dargestellt) Select machen:
SELECT id,name,vorname FROM users, spieler_id,punkte from highscores WHERE id=spieler_id ORDER BY punkte DESC LIMIT 20
Das Prob ist, das die Tabellen in unterschiedlichen DB´s liegen (hab ich leider keinen Einfluß drauf). Bisher habe ich immer nur mit Abfragen auf Tabellen einer DB gemacht, aber wie geht ein Join aus 2 Tabellen in 2 DB´s?
Thanks for help!
Bernd
PS.: achja, der Code ist in PHP...nur der Vollständigkeit halber...
Hallo Bernd,
Das Prob ist, das die Tabellen in unterschiedlichen DB´s liegen (hab ich leider keinen Einfluß drauf). Bisher habe ich immer nur mit Abfragen auf Tabellen einer DB gemacht, aber wie geht ein Join aus 2 Tabellen in 2 DB´s?
SELECT tabelle1.feld1, tabelle2.feld2 FROM db1.tabelle1, db2.tabelle2 ...
Viele Grüße,
Christian
SELECT tabelle1.feld1, tabelle2.feld2 FROM db1.tabelle1, db2.tabelle2 ...
Viele Grüße,
Christian
Hi Christian, thanks für die schnelle Hilfe, aber wie mach ichs in PHP? Ich habe mir folgende Funktion geschrieben, welche ich "include":
if(! $link=mysql_connect($MySQL_Host,$MySQL_User,$MySQL_passw))
{
echo"Failure to connect to Database\n"; //Failure to connect to the DB
exit;
}
function send_sql($db,$sql) // SQL-Uebermittlungsfunktion
{
if((! mysql_select_db($db))||(! $res=mysql_query($sql)))
{
echo "Failure in Query"; //Failure in Query-Statement
exit;
}
return $res;
}
mit dieser Funktion selecte ich eine DB und übergebe ihr mittels mysql_query den SELECT. Dabei wähle ich mit mysql_select_db eine DB(tja nur eine geht hier scheints) aus. Deswegen: Wie würde Dein o.g. SELECT in PHP aussehen? Ansonsten müsste ich mir mit dem Zwischenschritt helfen, das Ergebnis der Highscore-Tabelle in einem Array zu speichern und die Arraywerte (die spieler_id´s) mittels einer SQL-Abrageschleife in der User-DB durchgehn, das würde denke ich wesentlich langsamer sein, oder?
greets
Bernd
Hallo Bernd,
Hi Christian, thanks für die schnelle Hilfe, aber wie mach ichs in PHP?
Bsp: Du hast zwei DBs, db1 und db2. In db1 befindet sich die Tabelle alpha, in db2 die tabelle beta. Du willst beide Tabellen nun über die Spalte id verknüpfen:
mysql_select_db ("db1");
$res = mysql_query ("SELECT alpha.name, beta.ort FROM alpha, db2.beta WHERE alpha.id = beta.id");
Viele Grüße,
Christian
mysql_select_db ("db1");
$res = mysql_query ("SELECT alpha.name, beta.ort FROM alpha, db2.beta WHERE alpha.id = beta.id");
Hi Christian,
ich denke ich hab´s nun einigermassen gerafft! Nochmals vielen vielen Dank für die ultraschnelle Hilfe! Schönes Weekend noch!
greets
Bernd