Foros del Web » Programando para Internet » PHP »

Conexiones a Varias BD

Estas en el tema de Conexiones a Varias BD en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/02/2005, 06:30
 
Fecha de Ingreso: octubre-2003
Mensajes: 44
Antigüedad: 21 años, 1 mes
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
  #2 (permalink)  
Antiguo 08/02/2005, 07:06
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
bueno, lo unico que se me ocurre, es que crees varias configuraciones, me refiero a esto...

config.php
config1.php
config2.php

y asi sucesivamente dependiendo de cuantas base de datos tengas con sus correspondientes conexiones, y asi en el código podrás llamar a la conexion necesaria...

y para incluirlos en una página le pones asi...

require("config1.php");
require("config2.php");

etc... nose si interferiran entre si, pero no pierdes nada con probar...
  #3 (permalink)  
Antiguo 08/02/2005, 07:16
 
Fecha de Ingreso: octubre-2003
Mensajes: 44
Antigüedad: 21 años, 1 mes
Puntos: 3
Gracias, spyder_boy, pero el problema no viene por ahí, las conexiones las tengo bien y consigo rescatar datos tanto de una como de otra bd mi cuestion es hacer esos dos pasos que posteo anteriormente en una sola consulta, entiendes?
Gracias de tdas formas.
__________________
EduLopez.
Salu2 desde Albacete
  #4 (permalink)  
Antiguo 08/02/2005, 07:20
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
ah pues sorry :P

si ahora entiendo, pero nosé como hacerlo, :D
  #5 (permalink)  
Antiguo 08/02/2005, 07:32
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Puedes probar la sintaxis de basedatos.tabla (http://dev.mysql.com/doc/mysql/en/id...ualifiers.html).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 09/02/2005, 02:12
 
Fecha de Ingreso: octubre-2003
Mensajes: 44
Antigüedad: 21 años, 1 mes
Puntos: 3
Gran ayuda

Gracias Josemi, me has sido de gran ayuda, me has evitado modificar unas cuantas lineas de codigo.

Ya me extrañaba que mysql no contemplase esto, je,je,je.

Salu2.
__________________
EduLopez.
Salu2 desde Albacete
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:22.