# JOIN über zwei Datenbanken



## Soapp (5. März 2006)

Kann man mit JOIN auch 2 Tabellen aus 2 verschiedenen MYSQL-Datenbanken verknüpfen ?



Soapp


----------



## hpvw (5. März 2006)

Ja, man kann, wenn der angemeldete User Rechte auf beiden Datenbanken besitzt und diese auf einem MySQL-Server liegen (getestet mit 4.1.10).

Zugriff: 
datenbankname.tabellenname 
im ON-Teil: datenbankname.tabellenname.feldname 

Gruß hpvw


----------



## Soapp (5. März 2006)

hpvw hat gesagt.:
			
		

> Ja, man kann, wenn der angemeldete User Rechte auf beiden Datenbanken besitzt und diese auf einem MySQL-Server liegen (getestet mit 4.1.10).
> 
> Zugriff:
> datenbankname.tabellenname
> ...



wie konstruiere ich aber die zwei connections ?
einfach untereinanderschreiben und dann den JOIN machen ?

$link = mysql_connect('localhost', 'd001909d', 'xxx')or die('Could not connect: ' . mysql_error()); 
mysql_select_db('d001909d') or die('Could not select database');


$link2 = mysql_connect('localhost', 'd002721a', 'xxx')or die('Could not connect: ' . mysql_error()); 
mysql_select_db('d002721a') or die('Could not select database');


----------



## hpvw (5. März 2006)

Es geht nicht mit 2 Connections.
Ein Beispiel:
	
	
	



```
<?php
    mysql_connect("server" , "user" , "pass") or die(mysql_error());
    $res = mysql_query("select *
                        from db1.tab1
                        join db2.tab2
                          on db1.tab1.pk=db2.tab2.fk") or die(mysql_error());
    while ($row=mysql_fetch_assoc($res)) {
        print_r($row);
    }
?>
```
Gruß hpvw


----------



## preko (8. März 2006)

hpvw hat gesagt.:
			
		

> :
> 
> ```
> ...
> ...



Hi,

wofür steht das .pk, bzw .fk am ende (db1.tab1*.pk*=db2.tab2*.fk*)?  Verstehe ich nicht. 

Rest ist klar.

Ich möchte nämlich innerhalb einer Datenbank zwei unterschiedliche Tabellen anfragen.

Müsste dann ja eigentlich so ähnlich lauten, oder?

```
<?php 
    mysql_connect("server" , "user" , "pass") or die(mysql_error()); 
    $res = mysql_query("select * 
                        from tab1 
                        join tab2 
                          on tab1.pk=tab2.fk") or die(mysql_error()); 
    while ($row=mysql_fetch_assoc($res)) { 
        print_r($row); 
    } 
?>
```


Beste Grüße,
preko


----------



## valkuere (8. März 2006)

steht für die Tabellenverknüpfung
pk = primary key
fk = foreign key


----------



## preko (10. März 2006)

Hi,

vielen Dank, war das, was ich gebraucht habe.


Beste Grüße,
preko


----------



## ThiKool (10. Oktober 2016)

Geht dies auch, wenn man pro Datenbank einen eigenen User hat und keinen globalen User, der sich überall hin verbinden darf?

Also quasi ein Login während des Select`s? (Ähnlich wie ein connect_by bei Oracle)


----------

