Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/02/2005, 06:30
edulopez
 
Fecha de Ingreso: octubre-2003
Mensajes: 44
Antigüedad: 20 años, 6 meses
Puntos: 3
Conexiones a Varias BD

Muy buenas, os comento una duda que tengo.
Necesito acceder a tablas de diferentes bases de datos donde tengo un campo en comun para esas tablas y mostrar datos, por ejemplo, dni.
Me explico
DB1 - Datos de usuarios: dni, nombre, apellidos, etc.
DB2 - Horas extras: dni, dia,mes,año, horas, etc
DB3 - Vacaciones: dni, dia,mes, año, etc
DB4 - Articulos de oficina que han pedido.
DBXX -

Si, ya se que, lo mas comodo es que podíamos tener todas las tablas que existen en cada una de las DB juntas pero, son aplicaciones distintas en las que interfieren varios departamentos y decidimos 'sacar' los datos personales de los usuarios para llevar mejor el mantenimiento de la DB1 y no tener a lo largo del tiempo una BD con mil tablas ya que estamos desarrollando aplicaciones nuevas continuamente. El mantenimiento de usuarios es diario.
En fin que este fue el diseño que hicimos y ahora me encuentro con el 'problema ' de conexiones a diferentes BD.

Conforme hago ahora es definir una conexion para cada una de las BD en un fichero config, vale? y luego por ejemplo un select donde extraigo las horas extras que ha hecho cada uno, y conforme recorro el resultado de la consulta , selecciono en la otra BD los datos personales, para mostrarlos en pantalla.

Este es el codigo que normalmente utilizo:
-----------------
$resultado=mysql_db_query('guardias',"SELECT Dni,Dia,Mes,Año,Horas AS Thinc FROM totalhac WHERE Centro=$_SESSION[centro] AND Mes=$_POST[mes] AND Año=$_POST[ano] GROUP BY Dni,Mes,Año");
if(mysql_num_rows($resultado2)==0){
echo "Lo que sea";
}else{
while($campos2=mysql_fetch_array($resultado2)){
$vdni=$campos2[0];
$resultado=mysql_db_query('guardias',"SELECT Dni,Dia,Mes,Ano,Horas FROM hac WHERE Dni='".$vdni."' AND Centro='$_SESSION[centro]' AND Mes='$mes' AND Ano='$ano' AND Procesado='N' ORDER BY Ano,Mes,Dia,Dni");
if(mysql_num_rows($resultado)==0){
echo " Lo que sea";
}else{
while($campos=mysql_fetch_array($resultado)){
// Muestro datos;
}
}
mysql_free_result($resultado);
}
}
-----------------

Mi pregunta es si hay alguna forma de realizar una 'multi-conexion' en mysql de tal forma que podamos hacer algo parecido a un INNER JOIN, con BD distintas.

Perdonad, si estoy diciendo una burrada pero, no se, supongo que a mucha gente le pasará algo parecido y es algo que puede ahorrar mucho codigo.

Gracias de antemano y salu2.
__________________
EduLopez.
Salu2 desde Albacete