MySQL Join über verschiedene Datenbanken?

...komplette Frage anzeigen

6 Antworten

Bezogen auf deinen Link hier

https://pastebin.com/9nJ0BrDh

hast Du lediglich einen Schreibfehler vor FROM (das Komma ist zuviel).

Beispiel:

SELECT accounts.ID, characters.AccountID FROM DB1.accounts accounts JOIN DB2.characters characters ON characters.AccountID = accounts.ID

Voraussetzung, dass es dann läuft ist lediglich, dass der MySQL-Nutzer auf beide Tabellen zugreifen darf.

SELECT ...
FROM ACCOUNTDB.tabelle1 t1 JOIN CHARACTERDB.tabelle2 t2 ...

Kann es sein, dass Du Tabellen mit Datenbanken verwechselst?

Nein. Habe mich unklar ausgedrückt.
Also: Es gibt 2 Datenbanken.

Auf der 1 Datenbank ist die Account Tabelle. 

Auf der 2 Datenbank ist die Charackter Tabelle. 

Hoffe verstehst mich. :) 

0
@klugshicer

Tabelle 1 : accounts
Tabelle 2 : characters 

Was ist daran nicht zu verstehen? :D 

PS: die beiden Tabellen sind auf 2 verschiedenen DATENBANKEN!

0
@Adone1337

Also, wenn die Tabelle Account in einer ANDEREN Datenbank steht als die Tabelle Charackter, dann geht das NICHT in einer Abfrage direkt. Du musst dich ja jeweils mit einer Datenbank verbinden, die Inhalte auslesen und dich dann in der anderen Datenbank anmelden und dort die Abfrage machen.

Wenn die beiden Tabellen in der selben Datenbank stehen dann geht das ganz einfach mit JOIN

SELECT spaltenname.tabelle1,spaltenname.tabelle2 FROM
Account tabelle1 LEFT JOIN Charackter tabelle ON ID.Tabelle1 = ID.tabelle2 WHERE ...

Wie das sich mit den Joins verhält kannst du am Besten einer Grafik entnehmen, z.b. sowas hier


https://www.fachinformatiker.de/uploads/monthly\_2017\_05/5910618cb58f0\_VQ5XP1.png.01ceba1071761e84dfe3f4cbf13a484e.png


2

Account Table: "ID"

Character Table: "ID", "AccountID"

Vielleicht denkst du zu quer:

Wenn der User eingeloggt ist kannst du ja ja seine ID abfragen:
Du brauchst dann ja nur 1 SELECT über die Charakter DB machen

SELECT * FROM Character  WHERE ID = 'AKTUELLE USERID' 

Was möchtest Du wissen?