FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
referencia multiples bases de datos en una Consulta (Query) en firebird
Hola a todos:
La pregunta es la siguiente: Tengo 4 bases de datos: Inventario Ventas Seguridad Planilla Deseo realizar un scrip sql para extraer la informacion de por lo menos dos Baces de datos (Firebird). en una misma conexion. En Mysql lo he hecho de esta manera: select e.nombre, e.apellido from PLANILLA. empleado e INNER JOIN seguridad.usuario u ON (e.cedula=e.cedula) WHERE e.activo='S' En firebird como lo haria? Saludos a todos; |
#2
|
||||
|
||||
¿4 bases de datos?, supongo que quieres decir 4 tablas de una base de datos.
La sql es más o menos igual:
|
#3
|
|||
|
|||
No... son cuatro base de datos cada una de ella tiene sus tablas.
en pocas palabras es una consulta externa de una base de datos ejemplo: la idea es unificar tablas de dos bases de datos diferentes extrayendo informacion de cada una de ella en una sola conexion con FIREBIRD. lo digo porque en mysql se puede hacer y en firebird lei que la version 2.5 es capaz de realizarlo aqui muestro una frase "Otras mejoras en SQL incluyen la introducción de transacciones autónomas y la capacidad para consultar otras bases de datos mediante EXECUTE STATEMENT.". como lo hago? Saludos; Última edición por novato_erick fecha: 17-10-2010 a las 02:21:18. |
#4
|
||||
|
||||
Pues echa un vistazo para ver cómo funciona esa nueva instrucción. No la he usado porque no trabajo con firebird 2.5 todavía.
Actualmente lo haría mediante creando una conexión por cada base de datos, recogiendo los datos necesarios de cada una de las bases de datos y trabajando luego con esos datos. De todas formas, no sé por qué tienes 4 bases de datos para eso, me parece muy extraño. |
#5
|
|||
|
|||
Lo estoy realizando ya que estructuro mejor la base de datos y mis sistemas de Punto de venta, Planilla, manteniendo los datos en cada DB por ejemplo al crear un sistema de planilla puedo ingresar los empleados pero al vender el sistema de punto de venta e inventario estos empleados no todos usaran el sistema de ventas e inventarios esto me evita duplicar los datos en mi estructura de base de datos y mantener mejor la integridad.
Otro ejemplo seria y muy facil que unos de mis propios empleado es mi cliente para que necesitaria volver a copiar todos los datos de mi empleado y ponerlo como cliente si ya lo tengo. Creo que se ve complejo pero es una teoria que me ah funcionado... Lo uso asi porque no te imagina lo pequeño que se hace la base de datos en espacio y lo unico que necesito es desempeño de mi servidor porque le dejo la mayoria del trabajo a el. Ah... aclaro no soy experto en sql o base de datos pero asi fue como me enseñaron y le aye logica al manual de arquitectura de base de datos e integridad de datos. otra cosa que me llevo a esto es que donde empeze a trabajar habia dos base de datos entre ambas tenia aproximadamente 600mb con tan solo 4500 registro sin contar los registro duplicados y las tablas sin registro alguno. al volver a estructurarlo tan solo los mismo 4500 registro sin duplicidad de datos y sin tablas vacias se me redujo a 6mb pero claro en 4 DB. Es por eso que lo realizo de esa manera. |
#6
|
||||
|
||||
Pues según lo que comentas con la versión 2.5 si se puede hacer, mira este documento, Busca "EXECUTE STATEMENT" en la Pagina 67,
http://www.firebirdsql.org/rlsnotes/...leaseNotes.pdf Creo que hay esta tu respuesta. PD nunca lo he usado, pero en un proyecto que analizo actualmente me caerá muy bien esta nueva capacidad, solo que yo la tendré que usar con DB diferentes en servidores diferentes
__________________
Sitrico |
#7
|
||||
|
||||
Bueno, si te va bien así, pues estupendo.
Pero no es lo ideal, tampoco voy a explicar razones porque estoy seguro de que no lo vas a cambiar |
#8
|
|||
|
|||
Hola Casimiro
hace mas de un mes había hecho una consulta esta consulta el cual lo había dejado para avanzar en otras solicitudes... sin embargo estoy retomando el tema pero me dejaste con esta intriga. Cita:
Agradeciendo mucho su ayuda... Saludos novato_erick Última edición por novato_erick fecha: 10-01-2013 a las 17:52:09. |
#9
|
||||
|
||||
Hola novato_erick, tal y como se ha comentado antes, puedes traerte los datos que necesitas de distintas bases de datos usando "execute statement", aunque lo que quería darte a entender es que yo lo haría de otra forma, es que no se entiende el motivo de tener 4 bases de datos distintas.
Lo normal es tener una base de datos con las tablas necesarias. Desconozco si tu caso es algo "especial", deberías explicarlo ampliamente para que nos hagamos una idea clara del mismo y aconsejarte una cosa u otra. Saludos |
#10
|
|||
|
|||
El Administrador de proyectos anterior había sugerido utilizar una base de datos para cada sistema ejemplo:
Inventario, Ventas, Planilla, Contabilidad desconozco porque la sugerencia para mi es igual a lo que sugeriste... Cita:
ahora la consulta debe ser a partir de ese CODIGO3 pero ese código no esta en la tabla DETALLE_FACTURA... Espero haberme explicado... Saludos... |
#11
|
|||
|
|||
Estos son los campos de la tabla de inventario y Detalle_facturas
Esta es la Tabla DETALLE_FACTURAS
Ahora tengo esta consulta para traer los siguientes datos de la tabla de Inventario:
y esta es la consulta que realizo en la tabla de DETALLE_FACTURAS:
Ahora necesito es consultar por el CODIGO3 ya que este código se repite en varios productos o sea el codigo3 puede estar 50 articulos vendidos y hacer su respectiva sumas de totales.. ah... la BD esta en el mismo servidor... y es firebird 2.5... creo que me explique mejor... Saludos Última edición por novato_erick fecha: 10-01-2013 a las 18:33:35. |
#12
|
||||
|
||||
Entonces, según dices, esas tablas pertenecen a bases de datos distintas.
|
#13
|
||||
|
||||
Cita:
¿Qué posibilidades tienes de unirlas en una sola? |
#14
|
|||
|
|||
Cita:
|
#15
|
|||
|
|||
Cita:
Saludos Al Gonzalez.. |
#16
|
||||
|
||||
En lugar de hacerlo con "execute stament", también puedes usar el método "clásico", tener 2 conexiones distintas, una a cada base de datos, ya sabes.
Puedes traerte los datos de una y meterlos en una tabla en memoria, luego consultas en la otra base de datos y "mezclas" los datos con los existentes en la tabla en memoria. |
#17
|
|||
|
|||
Ok te entiendo Casimiro Notevi
Entonces si utilizo conexiones con componente por ejemplo DBExpress ya estaria cerrando este hilo y pasándolo a otro? Saludos... |
#18
|
||||
|
||||
Puedes seguir aquí, se trata de resolver un problema/duda y estamos con el mismo problema/duda, no es ninguna duda distinta, supongo.
Pero si vas a preguntar cómo funciona dbexpres o algo así, entonces es mejor en otro hilo, para que se pueda ver por el título de qué trata. |
#19
|
|||
|
|||
Cita:
dos Conexiones TsqlConnection uno para la dbInventario y otra para dbVentas dos TsqlQuery el cual: qConsultaArancel tiene en su propiedad SQL lo siguiente y conectado a inventario:
qConsultaVentaFactura tiene en su propiedad SQL y conectado a ventas:
Entonces tengo ya este codigo que me trae la información poniendolos hasta en tres ClientDataSet:
al final el ClientDataSet llamado cdsAgregaValorFacturas recibe un AppenData de mi cdsConsultaFActuraVentas.Data ya que como dije en el pos un codigo3 puede estar con 50 articulos diferentes... pero al final la información se va a reducir en esto: (es aquí donde estoy trabado) Cita:
Última edición por novato_erick fecha: 10-01-2013 a las 20:58:45. |
#20
|
||||
|
||||
¿Pero cual es el problema?
Por cierto, a esto: Al no haber involucrada ninguna otra tabla, le puedes quitar el "DETALLE_FACTURAS." a todos:
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como acceso a multiples bases de datos | ferdanjua | Firebird e Interbase | 2 | 17-08-2010 12:59:08 |
Servidor con multiples bases de datos firebird | drkirocorp | Conexión con bases de datos | 5 | 15-12-2009 17:54:55 |
Insertar un registro en multiples bases de datos. | Gaim2205 | Conexión con bases de datos | 2 | 09-11-2007 00:15:13 |
Como hacer referencia a un query dentro de otro query? | JuanBCT | SQL | 2 | 05-09-2006 18:35:25 |
Realizar una consulta (dbexpress) a dos bases de datos Firebird | jmlifi | Firebird e Interbase | 0 | 27-06-2006 13:36:54 |
|