Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-04-2004
txemag txemag is offline
Miembro
 
Registrado: feb 2004
Posts: 11
Poder: 0
txemag Va por buen camino
Question Consulta a dos databases diferentes....

....buscando y buscando no encuentro la forma de hacerlo. (es mas, casi aseguraria que no se va a poder hacer)

Imaginemos un database en local y otro database en remoto.

Como se puede hacer en una consulta para extraer algunos datos de una tabla que cuelga del primer database relacionados con una tabla que cuelga del otro database.

Buffff...que mal me he explicado.

Ejemplo:
Database1 apunta a 192.168.1.2:c:\bdd\pruebaLocal.gdb
Pongamos que tiene una tabla llamada mitablaLocal

Database2 apunta a 192.168.1.3:c:\bdd\pruebaRemoto.gdb
Pongamos que tiene una tabla llamada mitablaRemoto

Si se pudiera hacer algo de la forma:

select database1.mitablalocal.campo1 from database1.mitablalocal where
database1.mitablalocal.campo1 not in (select database2.mitablaremoto.campo1 from database2.mitablaremoto)

Como veis busco una solucion facil para sincronizaciones entre bdd's diferentes.

Gracias por adelantado....

Espero vuestas respuestas, aunque sea para decir que no se puede hacer.
Responder Con Cita
  #2  
Antiguo 25-04-2004
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 26
kinobi Va por buen camino
Hola,

Cita:
Empezado por txemag
....buscando y buscando no encuentro la forma de hacerlo. (es mas, casi aseguraria que no se va a poder hacer)
pues tú mismo te has contestado. El motor de consutas InterBase (o Firebird) no permite enlazar objetos de diferentes bases de datos.

Algunas bibliotecas de componentes (caso del BDE) permiten (yo nunca lo he probado) hacer el truco de lanzar consultas que involucren a bases de datos distintas, aunque imagino que internamente debe lanzar diferentes consultas (una para cada base de datos) y después construir un único Dataset con los resultados obtenidos por cada una de ellas.

Saludos.

P.D. Creo recordar que en el foro ya hablamos otra vez sobre este tema.
Responder Con Cita
  #3  
Antiguo 25-04-2004
txemag txemag is offline
Miembro
 
Registrado: feb 2004
Posts: 11
Poder: 0
txemag Va por buen camino
Gracias por contestar, si que me suena de otras veces haber leido algo sobre sincronizaciones en el foro, pero con tanto cambio de versiones de motores de bdd y tal como avanzan las cosas, igual me habia perdido algo.

Seguiremos haciendolo de forma "pedreste" y rudimentaria, una pena, algo que se hubiera podido hacer con una consulta a mi me lleva muchas lineas de codigo.

Habia oido que MiSQL ya tenia solucionado este problema.

Salu2

Responder Con Cita
  #4  
Antiguo 25-04-2004
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 26
kinobi Va por buen camino
Cita:
Empezado por txemag
Habia oido que MiSQL ya tenia solucionado este problema.
no sé si SQL Server lo permite (seguramente sí). De todas formas, es discutible que el asunto sea realmente una deficiencia del servidor y no un problema de diseño de la base de datos. Vamos, que la teoría relacional establece relaciones entre relaciones (tablas), pero no entre bases de datos.

Saludos.
Responder Con Cita
  #5  
Antiguo 25-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Cool

Cita:
Empezado por kinobi
no sé si SQL Server
Según entiendo, txemag se refería a mySQL y no a SQL Server.

De hecho, este tipo de consultas son soportadas por varios motores. Yo se de mySQL y de Oracle.

Cita:
Empezado por kinobi
es discutible que el asunto sea realmente una deficiencia del servidor y no un problema de diseño de la base de datos
Totalmente de acuerdo, aunque tarde o temprano, firebird terminará por soportarlo, pues es un hecho que se llega el momento en que es necesario interconectar diferentes bases de datos, ya sea a nivel de consulta, o a nivel de actualización. NO he profundizado en el tema en firebird, pero tengo entendido que si tiene soporte para commit en 2 fases... que es la base de las transacciones distribuidas.

Lo que para mi representa una deficiencia también en interbase (y no se si firebird siga la misma línea) es el hecho que no pueden haber dos tablas con el mismo nombre, de diferentes propietarios... esto en mas de una ocasión, obliga a dividir en varias bases de datos, lo que podria estar en una sola, con esquemas identicos bajo diferentes owners.

Para txemag, queda como tarea, verificar su modelo y determinar si no hay que unificar ambas bases de datos en una... si es asi, podes valerte de varios mecanismos para voltear la información de una base en otra y a partir de alli replantear tus consultas.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 25-04-2004
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 26
kinobi Va por buen camino
Hola Juan Antonio,

Cita:
Empezado por jachguate
Según entiendo, txemag se refería a mySQL y no a SQL Server.
Gracias por el apunte. Estaba con un navegador que no visualiza bien la tipografía y creí leer que se refería SQL Server.

Cita:
Empezado por jachguate
Totalmente de acuerdo, aunque tarde o temprano, firebird terminará por soportarlo, pues es un hecho que se llega el momento en que es necesario interconectar diferentes bases de datos, ya sea a nivel de consulta, o a nivel de actualización.
Sí, estoy de acuerdo, aunque, como dije antes, es discutible, ya que lo que puedes hacer con dos bases de datos lo puedes hacer con una. Es una cuestión de diseño. Evidentemente, siempre puede haber algún caso marginal que no se ajuste a esto.

Cita:
Empezado por jachguate
NO he profundizado en el tema en firebird, pero tengo entendido que si tiene soporte para commit en 2 fases... que es la base de las transacciones distribuidas.
Correcto, pero el problema de txemag no es la capacidad multi-base de datos de las transacciones InterBase (que sí las soporta), sino las consultas multi-base de datos, y ésas, por ahora, no puede con ellas.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:15:49.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi