sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo construyo una consulta de base de datos cruzada en PHP?

Necesitará que sus bases de datos se ejecuten en el mismo host.

Si es así, debería poder usar mysql_select_db en su base de datos favorita/predeterminada y especificar manualmente una base de datos externa.

$db = mysql_connect($hots, $user, $password);
mysql_select_db('my_most_used_db', $db);

$q = mysql_query("
    SELECT *
    FROM   table_on_default_db a, `another_db`.`table_on_another_db` b
    WHERE  a.id = b.fk_id
");

Si sus bases de datos se ejecutan en un host diferente, no podrá unirse directamente. Pero luego puedes hacer 2 consultas.

$db1 = mysql_connect($host1, $user1, $password1);
$db2 = mysql_connect($host2, $user2, $password2);

$q1 = mysql_query("
    SELECT id
    FROM   table
    WHERE  [..your criteria for db1 here..]
", $db1);
$tmp = array();
while($val = mysql_fetch_array($q1))
    $tmp[] = $val['id'];

$q2 = mysql_query("
    SELECT *
    FROM   table2
    WHERE  fk_id in (".implode(', ', $tmp).")
", $db2);