Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Unir dos Resultados horizontalmente

Estas en el tema de Unir dos Resultados horizontalmente en el foro de SQL Server en Foros del Web. Buenos días. Tengo un problema con dos consultas, ambas tablas se relacionan por un campo y al realizar la consulta con JOIN o LEFT JOIN ...
  #1 (permalink)  
Antiguo 14/10/2015, 10:27
Avatar de StephenQ  
Fecha de Ingreso: marzo-2007
Mensajes: 114
Antigüedad: 17 años
Puntos: 2
Pregunta Unir dos Resultados horizontalmente

Buenos días.

Tengo un problema con dos consultas, ambas tablas se relacionan por un campo y al realizar la consulta con JOIN o LEFT JOIN , me repite los resultado por cada elemento que se encuentre en la primera tabla, por ejemplo:

Código HTML:
Tabla 1 
SELECT Columna 1,Columna 2,Columna 3 FROM T1

Columna 1 | Columna 2 | Columna 3 |
----------------------------------
Elemento1 | Elemento2 | Elemento3 |
----------------------------------
Elemento1 | Elemento2 | Elemento4 |

Tabla 2 
SELECT Columna 4,Columna 5,Columna 6 FROM T2

Columna 4 | Columna 5 | Columna 6 |
----------------------------------
Elemento1 | Elemento6 | Elemento7 |
----------------------------------
Elemento1 | Elemento9 | Elemento10|
al hacer el cruce con JOIN o LEFT JOIN queda de la siguiente forma:
Código HTML:
Tabla Resultado : 

SELECT Columna 1,Columna 2,Columna 3,Columna 5,Columna 6 
FROM T1,T2 
WHERE T1.Columna 1=T2.Columna 4

Columna 1 | Columna 2 | Columna 3 | Columna 5 | Columna 6 |
----------------------------------------------------------
Elemento1 | Elemento2 | Elemento3 | Elemento6 | Elemento7 |
Elemento1 | Elemento2 | Elemento3 | Elemento9 | Elemento10|
Elemento1 | Elemento2 | Elemento4 | Elemento6 | Elemento7 |
Elemento1 | Elemento2 | Elemento4 | Elemento9 | Elemento10|
El resultado que deseo obtener es el siguiente:
Código HTML:
Tabla Resultado
Columna 1 | Columna 2 | Columna 3 | Columna 5 | Columna 6 |
----------------------------------------------------------
Elemento1 | Elemento2 | Elemento3 | Elemento6 | Elemento7 |
Elemento1 | Elemento2 | Elemento4 | Elemento9 | Elemento10|
Lo que quiero es que cada consulta se pegue exactamente al lado derecho de la primera tabla sin que se duplique los resultados por tener dos elementos diferentes en la Columna 3, esto es posible hacerse desde SQL o es mejor tirar las consultas independientemente y después unirlas desde código?

Nota: Estoy utilizando Sql Server 2014 Express.

Muchas gracias.
__________________
StephenQ
  #2 (permalink)  
Antiguo 14/10/2015, 10:45
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Unir dos Resultados horizontalmente

podrias hacer un distinct o un group by, y eso que pones no es un left join o innr join es un join implicito......

Código SQL:
Ver original
  1. SELECT DISTINCT Columna 1,Columna 2,Columna 3,Columna 5,Columna 6
  2. FROM T1,T2
  3. WHERE T1.Columna 1=T2.Columna 4
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 14/10/2015, 10:50
Avatar de StephenQ  
Fecha de Ingreso: marzo-2007
Mensajes: 114
Antigüedad: 17 años
Puntos: 2
Respuesta: Unir dos Resultados horizontalmente

Obviamente no es un LEFT JOIN, solo es una muestra de código. Un group BY no funciona por que si notas en la segunda tabla hay dos campos diferentes (Elemento 3 y 4) y el DISTINCT tan poco funciona por la misma razón.

Muchas gracias por tu respuesta.
__________________
StephenQ
  #4 (permalink)  
Antiguo 14/10/2015, 11:05
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Unir dos Resultados horizontalmente

Código SQL:
Ver original
  1. SELECT * FROM(
  2. SELECT Columna 1,Columna 2,Columna 3,Columna 5,Columna 6
  3. FROM T1,T2
  4. WHERE T1.Columna 1=T2.Columna 4
  5. ) AS t1 GROUP BY Columna 1,Columna 2,Columna 3,Columna 5,Columna 6
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 15/10/2015, 04:36
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Unir dos Resultados horizontalmente

Intentá así:
Código SQL:
Ver original
  1. SELECT  *
  2. FROM    (SELECT ROW_NUMBER() OVER(Partition BY Columna1 ORDER BY Columna2, Columna3) N,
  3.                 *
  4.         FROM    Tabla1) T1
  5. INNER JOIN (SELECT  ROW_NUMBER() OVER(Partition BY Columna1 ORDER BY Columna2, Columna3) N,
  6.                 *
  7.         FROM    Tabla2) T2
  8.     ON T1.Columna1=T2.Columna1
  9.     AND T1.N=T2.N;
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog

Etiquetas: join, sql-sentencia, tablas
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 23:56.