Consulta INNER con *TODOS* los datos de la primera tabla ..

26/06/2004 - 15:02 por MhBeyle | Informe spam
Seguramente sea esta una pregunta sencilla, pero bueno, la hago a ver
si alguien me responde y voy aprendiendo ...

Tengo una consulta parecida a esto:

SELECT dbo.TABLA_1.COD, dbo.TABLA_2.COD
FROM dbo.TABLA1 RIGHT OUTER JOIN dbo.TABLA_1.COD = dbo.TABLA_2.COD

(Más o menos, que es muy larga :) ) ..

Bien, esto me devuelve todos los campos de la primera tabla y aquellos
de la segunda que formen parte de la relación. Ahora bien, lo que
necesito es que aparezcan TODOS los campos de la primera tabla, tal
cual están, sin combinación, y a estos se añadan, en distintos
registros, los campos coincidentes. Con la relación que tengo ahora
mismo, los campos de la primera tabla que coinciden con la segunda,
aparecen combinados y yo lo que quiero es que, además de esto,
aparezcan como en el origen. Es decir, si tengo una primera tabla con
veinte registros, quiero que aparezcan esos veinte registros tal cual
y además, los cuatro, cinco o seis mil registros coincidentes con la
segnda tabla, añadidos a la primera.

Espero haberme explicado con claridad .

Muchas gracias,

MhBeyle __

Preguntas similare

Leer las respuestas

#1 Javier Loria
26/06/2004 - 17:46 | Informe spam
Hola:
Disculpa pero no entiendo bien lo que deseas :(
Un punto que puede ayudar seria la terminologia, las Tablas tienen FILAS
y COLUMNAS. Aunque no crear no tienen Campos ni Registros.
Hasta donde entendi quieres todas las FILAS de la primera Tabla y las
FILAS de la segunda que cumplan la condicion lo que lograste con el RIGTH
OUTER JOIN.
Donde no se entiende es cuando mezclas el concepto de Campos (columnas?)
y dices que quieres combinarlos con la existentes. No se si esa combinacion
es "Vertical" u "Horizontal". O sea si quieres agregarlas al conjunto de
datos resultante como FILAS o como COLUMNAS.
Una posiblidad es que esteS buscando el UNION o el UNION ALL, esta
instruccion permite combinar dos o mas conjuntos de datos para que se
contengan todas las filas. Graficamente seria:
Tabla1 Tabla2
1, 'Uno' 4, 'Cuatro'
2, 'Dos' 5, 'Cinco'
3, 'Tres' 2, 'Dos'
Un ejemplo de UNION es:
SELECT ... FROM Tabla1 UNION SELECT ... FROM Tabla2
El resultado es
Resultado
1, 'Uno'
2, 'Dos'
3, 'Tres'
4, 'Cuatro'
5, 'Cinco'
Un ejemplo de UNION ALL es:
1, 'Uno'
2, 'Dos'
3, 'Tres'
4, 'Cuatro'
5, 'Cinco'
2, 'Dos'
El primero elimina las filas repetidas y el segundo no.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

MhBeyle escribio:
Seguramente sea esta una pregunta sencilla, pero bueno, la hago a ver
si alguien me responde y voy aprendiendo ...

Tengo una consulta parecida a esto:

SELECT dbo.TABLA_1.COD, dbo.TABLA_2.COD
FROM dbo.TABLA1 RIGHT OUTER JOIN dbo.TABLA_1.COD = dbo.TABLA_2.COD

(Más o menos, que es muy larga :) ) ..

Bien, esto me devuelve todos los campos de la primera tabla y aquellos
de la segunda que formen parte de la relación. Ahora bien, lo que
necesito es que aparezcan TODOS los campos de la primera tabla, tal
cual están, sin combinación, y a estos se añadan, en distintos
registros, los campos coincidentes. Con la relación que tengo ahora
mismo, los campos de la primera tabla que coinciden con la segunda,
aparecen combinados y yo lo que quiero es que, además de esto,
aparezcan como en el origen. Es decir, si tengo una primera tabla con
veinte registros, quiero que aparezcan esos veinte registros tal cual
y además, los cuatro, cinco o seis mil registros coincidentes con la
segnda tabla, añadidos a la primera.

Espero haberme explicado con claridad .

Muchas gracias,

MhBeyle __
Respuesta Responder a este mensaje
#2 MhBeyle
26/06/2004 - 18:49 | Informe spam
On Sat, 26 Jun 2004 09:46:52 -0600, "Javier Loria"
wrote:

Hola:
Disculpa pero no entiendo bien lo que deseas :(
Un punto que puede ayudar seria la terminologia, las Tablas tienen FILAS
y COLUMNAS. Aunque no crear no tienen Campos ni Registros.



Perdón, perdón ... Si es que con tanto lenguaje y tanta aplicación,
me pierdo ... :)

Hasta donde entendi quieres todas las FILAS de la primera Tabla y las
FILAS de la segunda que cumplan la condicion lo que lograste con el RIGTH
OUTER JOIN.



Exacto. Pero TODAS.

Una posiblidad es que esteS buscando el UNION o el UNION ALL, esta
instruccion permite combinar dos o mas conjuntos de datos para que se
contengan todas las filas. Graficamente seria:
Tabla1 Tabla2
1, 'Uno' 4, 'Cuatro'
2, 'Dos' 5, 'Cinco'
3, 'Tres' 2, 'Dos'
Un ejemplo de UNION es:
SELECT ... FROM Tabla1 UNION SELECT ... FROM Tabla2
El resultado es
Resultado
1, 'Uno'
2, 'Dos'
3, 'Tres'
4, 'Cuatro'
5, 'Cinco'
Un ejemplo de UNION ALL es:
1, 'Uno'
2, 'Dos'
3, 'Tres'
4, 'Cuatro'
5, 'Cinco'
2, 'Dos'



Exacto. Esto es lo que busco, pero algo un pelín más complejo. Te lo
muestro gráficamente :

TABLA1 TABLA2

01 UNO 02 12/05/2001
02 DOS 02 14/06/1999
03 TRES 05 16/02/2003
04 CUATRO ...
05 CINCO

Si hago un UNION ALL tendría que tener :

01 UNO
02 DOS 12/05/2001
02 DOS
02 DOS 14/06/1999
03 TRES
04 CUATRO
05 CINCO
05 CINCO 16/02/2003

No lo he probado aún, pero supongo que es factible. Ahora bien, lo que
yo quiero, es filtrar esa UNION por, por ejemplo, el campo (perdón, la
COLUMNA) de la fecha y, si contiene algo, que el resultado quede como
sigue :

Por ejemplo, deseo la condición sobre el 12/05/2001 ...

01 UNO
02 DOS 12/05/2001
03 TRES
04 CUATRO
05 CINCO

O, por ejemplo, sobre el 02/02/1958, donde no habría coincidencias ...

01 UNO
02 DOS
03 TRES
04 CUATRO
05 CINCO


No sé si esto se puede hacer en la misma consulta donde utilizo la
UNION o habría que hacer una segunda consulta que contuviese a la
primera . Y ni siquiera sé si esto es factible .

Con tu ayuda, de momento, me voy a poner a jugar con las UNION, pero
dejo colgada esta pregunta porque creo que es muy interesante.

Y perdona por la dislexia terminológica, pero es que uno ya no puede
con tanta sintáxis diferente :D

Un saludo,

MhBeyle ____
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida