FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problema con 2 joins mismos campos
Hola,
Tengo un problema con una consulta en la que realizo dos joins, y el problema es que solo me devuelve los registros del segundo join. Y el resultado que busco es que me devuelva todos los registros de la tablaA con los datos que coincidan de las otras tablas. SELECT "TablaA."."Campo1", "TablaB."."Campo1", "TablaC."."Campo1" FROM "TablaA" LEFT OUTER JOIN "TablaB" ON (("TablaA"."idDocumento" = "TablaB"."idDocumento") AND ("TablaA"."Flag" = 'B')) LEFT OUTER JOIN "TablaC" ON (("TablaA"."idDocumento" = "TablaC"."idDocumento") AND ("TablaA"."Flag" = 'C')) La consulta funciona bien si solo utilizo uno de los joins, creo que lo que da problemas es que utilizo en la condicion los mismo campos de la TablaA. Estoy utilizando interbase 6.0 y desde C++ Builder 6.0 con componentes IBX. Saludos. Nota: Si en las condiciones de los dos joins quito la comparacion "TablaA"."Flag" = 'C', el resultado que da la consulta es casi el deseado. Por lo menos retorna todos lo registros de la TablaA. Lo unico que confunde los documentos de un tipo y de otro.
__________________
Saludos, Bitman Última edición por Toni fecha: 21-04-2009 a las 15:52:57. |
#2
|
||||
|
||||
__________________
|
#3
|
|||
|
|||
Hola ContraVeneno,
Primero muchas gracias por tu contestacion. Pero quizas no me explique del todo bien, en la TablaA hay muchos registros con valores distintos para el campo Flag ('A','B,'C','D'...) y quiero que en la consulta me los muestre todos. Pero en el caso de un registro con valor 'B' vaya a buscar solo a la TablaB y si el valor es 'C' a la TablaC, otros valores no los buscara en tablas anexas y mostrara los campos TablaB.Campo1, TablaC.Campo1 como null. Por eso esta añadido a la condicion del join la comparacion de valor del Flag, que de hecho si solo dejo uno de los join funciona bien, pero claro me hace falta contra las dos tablas y no veo el porque. Saludos
__________________
Saludos, Bitman |
#4
|
||||
|
||||
Si quieres los datos de la TablaA que también tengan datos en las otras dos tablas, deberás utilizar "JOIN" y no "LEFT OUTER JOIN".
También puedes probar utilizando "LEFT JOIN"
Última edición por duilioisola fecha: 21-04-2009 a las 18:51:07. |
#5
|
||||
|
||||
pero lo que se requiere son "Todos" los registros de la TablaA, por lo que el "left outer join" es correcto...
__________________
|
#6
|
|||
|
|||
Hola duilioisola,
Muchas gracias por tu contestacion. Lo he probado pero no funciona bien, no retorna ningun registro en este caso. Esto es una cosa que ya he realizado habitualmente y siempre me ha funcionado anexar tablas externas con left outer join. La unica diferencia que hay en este caso y la que me provoca el problema es que las dos tablas se anexan con un mismo campo de la tabla principal y en funcion del valor de un Flag debe anexar con una o con otra y si el flag tienen otro valor diferente mostrar el registro igualmente. Es curioso porque solo muestra los registros coincidentes con el segundo join!! Saludos.
__________________
Saludos, Bitman Última edición por Toni fecha: 21-04-2009 a las 19:22:49. |
#7
|
||||
|
||||
Acabp de hacer esta prueba:
Código:
Tabla TA CAMPO1 IDDOCUMENTO FLAG 1 1 A 2 2 C 3 3 C 1 1 B 2 2 B Código:
Tabla TB CAMPO1 IDDOCUMENTO 1 1 2 2 3 3 Código:
Tabla TC CAMPO1 IDDOCUMENTO 1 1 2 2
Código:
CAMPO1 CAMPO11 CAMPO12 1 null null 1 1 null 2 null 2 2 2 null 3 null null |
#8
|
|||
|
|||
Este problema ya me resultaba algo extraño, pero al decirme que a ti te funciona correctamente he pensado que quizas fuese la version del servidor de base de datos. Yo estoy utilizando Interbase 6.0 en este equipo donde no me funciona, he copiado la base de datos a otro ordenador que tengo instalado Firebird 1.5 y me funciona correctamente la consulta SQL que me daba el problema.
Por lo que parece ser un problema en el Interbase 6.0. Muchas gracias por vuestra ayuda.
__________________
Saludos, Bitman |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Eliminar duplicados lista con mismos caracteres | Paolo | Varios | 12 | 08-09-2008 10:11:24 |
De los mismos creadores de pico llega ... | seoane | Internet | 36 | 22-04-2007 01:03:28 |
Problema con Joins | Luis Castillo | SQL | 9 | 30-11-2005 04:19:29 |
Con urgencia necesito ver los mismos registros.. | mateamargo | Conexión con bases de datos | 5 | 30-10-2005 17:44:54 |
Metodos que devuelven referencias a sí mismos | shaktale | OOP | 8 | 07-06-2003 03:04:12 |
|