Foros del Web » Programando para Internet » PHP »

Consultas con diferentes Bases de Datos

Estas en el tema de Consultas con diferentes Bases de Datos en el foro de PHP en Foros del Web. Saludos!! Estoy desarrollando una aplicacion PHP con MySQL, en este tengo diferentes Bases de Datos y Tablas. El problema es q para cierta parte de ...
  #1 (permalink)  
Antiguo 24/07/2006, 09:15
Avatar de Lord Kazuky  
Fecha de Ingreso: junio-2006
Ubicación: 7F.00.00.01
Mensajes: 123
Antigüedad: 18 años, 5 meses
Puntos: 5
Información Consultas con diferentes Bases de Datos

Saludos!!

Estoy desarrollando una aplicacion PHP con MySQL, en este tengo diferentes Bases de Datos y Tablas. El problema es q para cierta parte de la aplicacion necesito consultar 2 bases de datos distintas pero nose si esto se pueda mediante un mismo query.

Por decir Tengo en una base de datos informacion general de empleados de toda una empresa y en otra base de datos tengo solo los ID de los que tienen acceso a cierta aplicacion. Entonces en la aplicacion tengo q mostrar la informacion general de esos usuarios, consultando solo los empleados q sean usuarios de la aplicacion. (No se si me Hice entender)

Entonces nose si esto se pueda hacer o no, se tenga que usar alguna funcion especial de PHP, o un query de MySQL, o haya alguna manera.

Muchas Gracias por su colaboracion!
__________________
Saludos.
"Cualquier tonto puede escribir código que un computador entiende. Los buenos programadores escriben código que los humanos pueden entender. ;)"
  #2 (permalink)  
Antiguo 24/07/2006, 09:30
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años, 7 meses
Puntos: 10
Buenas tardes Lord Kazuky

Por los conocimientos que tengo, creo que una subconsulta, contra 2 bases de datos diferentes, no se puede...

Ten en cuenta que cuando haces una consulta usando MySQL, lo que haces es definir una conexión, y con ella ejecutar tus consultas... y la conexión, se establece contra una UNICA base de datos, con un USUARIO unico, y con una CLAVE única.

Como posibilidades tienes:
1.- Montar la tabla de los ID's en la misma base de datos donde tienes los usuarios y ejecutar la consulta haciendo un JOIN de las dos tablas

2.- Hacer conexión contra una de las base de datos, y sacar los ID's. Despues hacer conexión contrla la otra baser de datos, y sacar los usuarios que sus ID's esten en los que ya tenías (es una consilta IN)

(son dos posibilidades diferentes)

Creo que la segunda es la menos óptima, dado que tener informaciones iguales, en bases de datos diferentes, es un error, porque las consultas van a tardar más en realizarse.

Espero que te haya sido de utilidad lo que te comentaba.

Un saludo

  #3 (permalink)  
Antiguo 24/07/2006, 11:42
Avatar de Lord Kazuky  
Fecha de Ingreso: junio-2006
Ubicación: 7F.00.00.01
Mensajes: 123
Antigüedad: 18 años, 5 meses
Puntos: 5
Weno pues creo q intentare la primera opcion, (la segunda no la entendi muy bien, como es la consulta IN).

Anunque de todas formas me queda la duda, esta "limitacion" por asi decirlo, es de MySQL, o del PHP?

hay forma de hacer esto con otros Motores o Lenguajes de Programacion Web, por q weno esta vez digamos no es tan grave, pero con algunas aplicaciones mas complejas puede ser todo un problema.

Gracias!!
__________________
Saludos.
"Cualquier tonto puede escribir código que un computador entiende. Los buenos programadores escriben código que los humanos pueden entender. ;)"
  #4 (permalink)  
Antiguo 24/07/2006, 11:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
No veo limitación en "PHP" ni menos en "Mysql" .. es sólo cosa de manejar mejor el SQL.

Si hablas de Base de datos diferentes .. en Mysql puedes hacer referencia a una BBDD concreta (dentro de un mismo "servidor" se entiende con un mismo usuario que te conectes y que tenga permiso para esas BBDD igualmente) nombrando la BBDD en concreto:

BBDD1
tabla1
campos

BBDD2
tablaX
campos

SELECT BBDD1.tabla1.campo,BBDD2.tablaX.campo WHERE .. condiciones ..

Si las BBDD a las que te conectas están en diferentes servidores .. resolverías el tema con PHP por médio (a costa de una baja de rendimiento en las consultas .. pero se puede hacer igualmente).

Tal vez la pregunta que debes hacer es "por qué tengo varias BBDD" .. muchas veces no se justificaría tener dos "BBDD" .. unifica las tablas sobre una Misma BBDD. (esto es como todo, hay que conocer antecedentes reales como para ver si podría ser lo que te planteo o no .. ).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 24/07/2006, 15:36
Avatar de Lord Kazuky  
Fecha de Ingreso: junio-2006
Ubicación: 7F.00.00.01
Mensajes: 123
Antigüedad: 18 años, 5 meses
Puntos: 5
Efectivamente las Bases de Datos estan en el mismo servidor gracias a esta consulta puedo accerderlas al mismo tiempo.

Ahora que si estuvieran en Distintos Servidores, e incluso con diferentes motores de BD, digamos MySQL e Informix, pues una vez establecida la conexion con ambas, existe alguna funcion que permita relacionar las consultas? o tendria esto q realizarse digamos "Manualmente".

Gracias, Saludos!
__________________
Saludos.
"Cualquier tonto puede escribir código que un computador entiende. Los buenos programadores escriben código que los humanos pueden entender. ;)"

Última edición por Lord Kazuky; 24/07/2006 a las 15:45
  #6 (permalink)  
Antiguo 24/07/2006, 18:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por Lord Kazuky
Efectivamente las Bases de Datos estan en el mismo servidor gracias a esta consulta puedo accerderlas al mismo tiempo.

Ahora que si estuvieran en Distintos Servidores, e incluso con diferentes motores de BD, digamos MySQL e Informix, pues una vez establecida la conexion con ambas, existe alguna funcion que permita relacionar las consultas? o tendria esto q realizarse digamos "Manualmente".

Gracias, Saludos!
Sería en ese caso "manualmente" .. Obtienes dato de una consulta en un motor de BBDD y otra consulta al otro ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 15/07/2016, 02:58
 
Fecha de Ingreso: marzo-2014
Mensajes: 11
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Consultas con diferentes Bases de Datos

en el caso de dos bases de datos en el mismo servidor, mismo motor, mismos usuarios y contraseñas.

¿Cual seria la sentencia para conectar a ambas bases de datos y poder realizar consultas a ambas referenciando el nombre de la bd?

por ejemplo, yo uso lo siguiente para conectar con una base de datos:

global $dbs;
$dbs = new mysqli($host, $usuario, $password, $name_bbdd);


¿como seria para hacerlo con dos y poder usar querys en ambas bds?

Gracias!
  #8 (permalink)  
Antiguo 15/07/2016, 06:15
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 21 años
Puntos: 154
Respuesta: Consultas con diferentes Bases de Datos

Hola emiliochu,

Lo primero, no se debe reabrir un post de hace 10 años, por favor, revisa las políticas del foro.

Lo segundo, como ya se menciona en el post que no deberías haber abierto, no se puede realizar una consulta a dos bases de datos diferentes.
  #9 (permalink)  
Antiguo 15/07/2016, 07:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consultas con diferentes Bases de Datos

Adicionalmente: Ciertos DBMS poseen recursos para realizar consultas entre ellos, pero no se trata de queries simples, y no todos los DBMS lo permiten. Se trata de temas para DBA experimentados.

Por otro lado no es tema de PHP, sino de Base de Datos, por lo que estás posteando el problema en el foro equivocado
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 10:32.