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

Obtener Informacion de 2 Tablas [Misma Estructura en las tablas] en una sola consulta

Estas en el tema de Obtener Informacion de 2 Tablas [Misma Estructura en las tablas] en una sola consulta en el foro de SQL Server en Foros del Web. Buenas Tardes! Me eh llevado la tarde en intntos fallidos de conseguir unir 2 tablas o sacar inforacion de 2 tablas en una sola consulta, ...
  #1 (permalink)  
Antiguo 22/07/2010, 16:57
Avatar de hugo180486  
Fecha de Ingreso: septiembre-2007
Mensajes: 199
Antigüedad: 16 años, 7 meses
Puntos: 3
Obtener Informacion de 2 Tablas [Misma Estructura en las tablas] en una sola consulta

Buenas Tardes! Me eh llevado la tarde en intntos fallidos de conseguir unir 2 tablas o sacar inforacion de 2 tablas en una sola consulta, y no eh podido, quisiera saber si es posible eso.

Miren esto es lo que quisiera hacer con la consulta.
tblArticulo1
Articulo----------Volumen
C500---------------200
C400---------------100
C100----------------98
C150----------------10

tblArticulo2
Articulo----------Volumen
A500----------------95
C400---------------600
C100---------------500
C150----------------11
R500--------------10000


El Resultado que quiero Obtener es el siguiente:
Articulo---------Vol tblArticulo 1---------Vol tblArticulo 2
A500-----------------NULL------------------------95
R500-----------------NULL----------------------10000
C500------------------200------------------------NULL
C100-------------------98-------------------------500
C400-------------------100-----------------------600
C150-------------------10-------------------------11

Intente lo Siguiente

Código SQL:
Ver original
  1. SELECT A1.Articulo, A1.Volumen, A2.Volumen
  2. FROM tblArticulo1 A1, tblArticulo1 A2
  3. WHERE A1.Aritculo IN (
  4.                                    SELECT Articulo FROM tblArticulo1
  5.                                    UNION
  6.                                    SELECT Articulo FROM tblArticulo2
  7.                                    )
  8. OR A1.Aritculo IN (
  9.                                    SELECT Articulo FROM tblArticulo1
  10.                                    UNION
  11.                                    SELECT Articulo FROM tblArticulo2
  12.                                    )

Es lo mas cerca que estuve segun yo, pero es un desastre el resultado...

Les agradesco de antemano.
  #2 (permalink)  
Antiguo 22/07/2010, 17:08
Avatar de DanX03  
Fecha de Ingreso: septiembre-2007
Ubicación: México D.F.
Mensajes: 148
Antigüedad: 16 años, 6 meses
Puntos: 3
Respuesta: Obtener Informacion de 2 Tablas [Misma Estructura en las tablas] en una so

Cambia la instruccion de esta forma

Código SQL:
Ver original
  1. SELECT A1.Articulo, A1.Volumen1, A2.Volumen2  FROM (SELECT articulo,volumen AS
  2. volumen1 FROM tblarticulo) a1 LEFT JOIN (SELECT articulo, volumen AS volumen2 FROM
  3. tblarticulo2) a2 ON a1.articulo=a2.articulo

y nos comentas el resultado
  #3 (permalink)  
Antiguo 22/07/2010, 17:31
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Obtener Informacion de 2 Tablas [Misma Estructura en las tablas] en una so

¿No bastaria con un simple FULL JOIN?
  #4 (permalink)  
Antiguo 23/07/2010, 07:29
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Obtener Informacion de 2 Tablas [Misma Estructura en las tablas] en una so

asi es intenta hacer un full join

Select "Campos"
from Tabla1
full join Tabla2
where "Condiciones"

Asiii...
  #5 (permalink)  
Antiguo 23/07/2010, 08:16
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Obtener Informacion de 2 Tablas [Misma Estructura en las tablas] en una so

Espera esta mal la consulta de ahi... te recomiendo esta consulta mejor...
Código SQL:
Ver original
  1. SELECT Articulo, Volumen1, 0 Volumen2
  2. FROM tblArticulo1
  3. UNION ALL
  4. SELECT Articulo, 0 Volumen1, Volumen2
  5. FROM tblArticulo2
ahi esta mejor!!! intenta
  #6 (permalink)  
Antiguo 23/07/2010, 09:18
Avatar de hugo180486  
Fecha de Ingreso: septiembre-2007
Mensajes: 199
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Obtener Informacion de 2 Tablas [Misma Estructura en las tablas] en una so

Hola Buenos Dias!, Gracias por la ayuda pero sigo sin ocnseguirlo

iislas no se si asi se use el FULL JOIN, lo realice asi y me arroja muchos resultados, solo requiero de 195 (son los articulos distintos que hay en las 2 tablas, algunos coinciden, unos solo estan en una tabla y viceversa.), esta consulta me arroja como 72,000 resultados, y me repite los articulos el volumen y las libras, para nada soy experto (ya se habran dado cuente) pero me debieran de salir campos NULL y no salen.
Código SQL:
Ver original
  1. SELECT Prod.IdArticulo, Prod.Vol_LB, B.Vol_LB
  2. FROM tblProductos Prod, tblProductos_B B
  3. WHERE Prod.Fecha = '20100703'
  4. UNION ALL
  5. SELECT B.IdArticulo, Prod.Vol_LB, B.Vol_LB
  6. FROM tblProductos_B B, tblProductos Prod
  7. WHERE B.Fecha = '20100703'

DanX03, esto tampoco funciono, pues de todos modos fijate que ahi nada mas me seleccionas los articulos de una tabla, entonces solo te mostrara esoso articulos olvidando los que estan en la segunda tabla que en la primera no exsiten creo que ahi ps ya no me va ah funcionar (ese inconveniente ya lo habia tenido yo),

Código SQL:
Ver original
  1. SELECT Prod.IdArticulo, Prod.Vol_LB, B.Vol_LB
  2. FROM (SELECT IdArticulo, Vol_LB FROM tblProductos WHERE Fecha  = '20100703') Prod
  3. LEFT JOIN (SELECT IdArticulo, Vol_LB FROM tblProductos_B WHERE Fecha  = '20100703') B
  4. ON Prod.IdArticulo = B.IdArticulo

Rommel, basandome en tu consulta me retorna tambien bastantes registros, ademas ningun NULL..

Código SQL:
Ver original
  1. SELECT Prod.IdArticulo, Prod.Vol_LB, B.Vol_LB
  2. FROM tblProductos Prod, tblProductos_B B
  3. WHERE Prod.Fecha = '20100703'
  4. UNION ALL
  5. SELECT B.IdArticulo, Prod.Vol_LB, B.Vol_LB
  6. FROM tblProductos_B B, tblProductos Prod
  7. WHERE B.Fecha = '20100703'

Gracias por la yuda, si tienen otras alternativas se los agradeceria...
  #7 (permalink)  
Antiguo 23/07/2010, 09:34
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Obtener Informacion de 2 Tablas [Misma Estructura en las tablas] en una so

Código SQL:
Ver original
  1. SELECT t1.*, t2.*
  2. FROM Tabla1 t1 FULL JOIN tabla2 t2
  3. ON t1.campo = t2.campo

Todos aquellos que no coincidan, de ambas tablas, se mostraran como NULL
  #8 (permalink)  
Antiguo 23/07/2010, 09:52
Avatar de hugo180486  
Fecha de Ingreso: septiembre-2007
Mensajes: 199
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Obtener Informacion de 2 Tablas [Misma Estructura en las tablas] en una so

NO me funciono, me salen muchos repetidos, cuando filtro por fecha, me slane menos resultdados.

Explico de Nuevo
Tengo 2 Tablas, en la primer tabla fechados con '20100703' tengo 108 Aritucolos, en la segunta tabal con la misma fecha tengo 140 articulos.

Ahora de los 140 y los 180, si los juntara solo me quedarian 195 cuando no se repitem, en la primer tabla existen articulos que en la segunda no y viceversa.

Lo que pretendo lograr es listar esos 195 Articulos, ademas de 2 columnas de volumen, osea Articulo, Volumen Tabla 1, Volumen Tabla 2, que me liste los 195 aunqeu en las columnas de VOlumen 1 y Volumen 2 me ponga campos Nullos, que es obvio que deben de salir ps algunos articulos no salen en la primer tabla y otros si...

Saludos
  #9 (permalink)  
Antiguo 23/07/2010, 10:52
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Obtener Informacion de 2 Tablas [Misma Estructura en las tablas] en una so

Código SQL:
Ver original
  1. -- Creo las tablas de paso
  2. CREATE TABLE #Tabla1 (Articulo CHAR(4), Volumen INT, ProFecha Datetime)
  3. CREATE TABLE #Tabla2 (Articulo CHAR(4), Volumen INT, ProFecha Datetime)
  4. -- iserto los 1os registros
  5. INSERT INTO #Tabla1 (Articulo, Volumen, ProFecha)
  6. VALUES('C500',200,'20100703')
  7. INSERT INTO #Tabla1 (Articulo, Volumen, ProFecha)
  8. VALUES('C400',100,'20100703')
  9. INSERT INTO #Tabla1 (Articulo, Volumen, ProFecha)
  10. VALUES('C100',98,'20100703')
  11. INSERT INTO #Tabla1 (Articulo, Volumen, ProFecha)
  12. VALUES('C150',10,'20100703')
  13. -- Inserto los 2dos registros
  14. INSERT INTO #Tabla2 (Articulo, Volumen, ProFecha)
  15. VALUES('A500',95,'20100703')
  16. INSERT INTO #Tabla2 (Articulo, Volumen, ProFecha)
  17. VALUES('C400',600,'20100703')
  18. INSERT INTO #Tabla2 (Articulo, Volumen, ProFecha)
  19. VALUES('C100',500,'20100703')
  20. INSERT INTO #Tabla2 (Articulo, Volumen, ProFecha)
  21. VALUES('C150',11,'20100703')
  22. INSERT INTO #Tabla2 (Articulo, Volumen, ProFecha)
  23. VALUES('R500',10000,'20100703')
  24.  
  25. -- Veo los resultados
  26. SELECT
  27. (CASE WHEN #Tabla1.Articulo IS NULL THEN #Tabla2.Articulo ELSE #Tabla1.Articulo END) AS Articulo,
  28. #Tabla1.Volumen AS Vol,
  29. #Tabla2.Volumen AS Vo2
  30. FROM #Tabla1 FULL JOIN #Tabla2 ON #Tabla1.articulo = #Tabla2.articulo

Código SQL:
Ver original
  1. C500    200 NULL
  2. C400    100 600
  3. C100    98  500
  4. C150    10  11
  5. A500    NULL    95
  6. R500    NULL    10000


Como la FECHA nos la comentas en tu ultimo post, no se que rol juegue dentro del query, no nos des la información a pedacitos..

Última edición por iislas; 23/07/2010 a las 11:03
  #10 (permalink)  
Antiguo 23/07/2010, 11:09
Avatar de hugo180486  
Fecha de Ingreso: septiembre-2007
Mensajes: 199
Antigüedad: 16 años, 7 meses
Puntos: 3
De acuerdo Respuesta: Obtener Informacion de 2 Tablas [Misma Estructura en las tablas] en una so

Si no le tome importancia por que pense que independientemente de la fehca se puede obtener rl resultado, y por lo que veo si es asi pues la solucion que me diste funcioaria para ambos casos, se podria hacer de unamanera mas facil...

GRacias...
  #11 (permalink)  
Antiguo 23/07/2010, 11:12
Avatar de hugo180486  
Fecha de Ingreso: septiembre-2007
Mensajes: 199
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Obtener Informacion de 2 Tablas [Misma Estructura en las tablas] en una so

Si no le tome importancia por que pense que independientemente de la fehca se puede obtener rl resultado, y por lo que veo si es asi pues la solucion que me diste funcioaria para ambos casos, no me imaginaba que fuera una solucion tan "laboriosa"..., borrar la informacion y poner cada vez que ocupe la consulta o borrar y crear las tablas cada vez, lo que pasa es quese nos limita el numero d etablas a crear, la informacion la ocupa para reportaer en Excel, pero gracias por la solucion, hasta luego que tengan un buen dia.

GRacias...
  #12 (permalink)  
Antiguo 23/07/2010, 11:54
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Obtener Informacion de 2 Tablas [Misma Estructura en las tablas] en una so

Hugo

Las tablas que yo creo, son para hacer las PRUEBAS, en tu caso, no las requieres, lo unico que deberias ejecutar es el ULTIMO SELECT que va en mi ejemplo, ¿porque dices que es laboriosa?
  #13 (permalink)  
Antiguo 23/07/2010, 14:08
Avatar de hugo180486  
Fecha de Ingreso: septiembre-2007
Mensajes: 199
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Obtener Informacion de 2 Tablas [Misma Estructura en las tablas] en una so

Si iislas como dirian aca me ape..... bueno no puedo poner la palabra completa, fue un errorsote, la cuestion es que Gracias por la ayuda, tu consulta me funciono muy bien, solo que tuve que agregarle las condiciones y agrupar y sumar los articulos.\

Código SQL:
Ver original
  1. SELECT (CASE WHEN Prod.IdArticulo IS NULL THEN Bdg.IdArticulo ELSE Prod.IdArticulo END) AS Item,
  2. SUM(Prod.Vol_LB) AS Volumen_Productos, SUM(Bdg.Vol_LB) AS Volumen_B FROM tblPoductos Prod
  3. FULL JOIN tblPoductos_B Bdg ON Prod.IdArticulo= Bdg.IdArticulo
  4. WHERE Prod.Fecha = '20100703' OR Bdg.Fecha =  '20100703'
  5. GROUP BY Prod.IdArticulo, Bdg.IdArticulo
  #14 (permalink)  
Antiguo 23/07/2010, 14:30
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Obtener Informacion de 2 Tablas [Misma Estructura en las tablas] en una so

Perfecto !!!, saludos.........

Etiquetas: estructura, informacion, 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 18:26.