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

Fusionar 2 tablas con clausula UNION y agrupar el resultado - access2003 es posible?

Estas en el tema de Fusionar 2 tablas con clausula UNION y agrupar el resultado - access2003 es posible? en el foro de Bases de Datos General en Foros del Web. Tengo 2 tablas FACTURA y BOLETA, quiero agrupar el total de ventas por codigo de empleado. Con esta consulta esta todo bien, el problema es ...
  #1 (permalink)  
Antiguo 12/02/2009, 13:20
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 10 meses
Puntos: 10
Fusionar 2 tablas con clausula UNION y agrupar el resultado - access2003 es posible?

Tengo 2 tablas FACTURA y BOLETA, quiero agrupar el total de ventas por codigo de empleado.

Con esta consulta esta todo bien, el problema es que me muestra 2 resultados
por separado, el total de boletas y el total de facturas cada una agrupada por el codEmp en lugar de un total general por empleado.

Que debo hacer para que me muestre un solo resultado, como veran utilizo la clausula UNION para fusionar las tablas

Código:
SELECT F.CodEmp, SUM( F.TotalFinal)
FROM Factura AS F
WHERE F.CODEMP='02'
GROUP BY F.CodEmp

UNION 

SELECT B.CodEmp, SUM(B.Total)
FROM BOLETA AS B
WHERE B.CODEMP='02'
GROUP BY B.CodEmp;
El resultado que arroja es
CodEmp-total
02-100
02-500

Yo quiero me muestre todo junto
02-600

Es posible, como lo resuelvo?

saludos
  #2 (permalink)  
Antiguo 12/02/2009, 13:43
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Fusionar 2 tablas con clausula UNION y agrupar el resultado - access2003 e

Creo que algo así puede hacerse, pero sé si en Access te funcionará

SELECT (
(

SELECT SUM( importe_ingreso )
FROM tabla1 where... group by ...
) + (
SELECT SUM( importe_ingreso )
FROM tabla2 where... group by... )
) AS total
  #3 (permalink)  
Antiguo 12/02/2009, 14:20
Avatar de Elmejor915  
Fecha de Ingreso: febrero-2009
Ubicación: Tarapoto
Mensajes: 14
Antigüedad: 15 años, 9 meses
Puntos: 0
De acuerdo Respuesta: Fusionar 2 tablas con clausula UNION y agrupar el resultado - access2003 e

Saludos. Acá logré hacer lo que necesitas mediante un procedimiento almacenado que crea una tabla temporal, luego mediante 2 consultas llenamos la tabla temporal, y por último una consulta para saber que datos mostrar al final, después simplemente ejecutamos el procedimiento almacenado.


CREATE PROCEDURE PaTmpTotales
AS

IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = object_id(N'#TmpTotales') and OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN
DROP TABLE #TmpTotales
END

CREATE TABLE #TmpTotales
( IdTmp Varchar(10),
Monto numeric(18,2),
)


INSERT INTO #TmpTotales(IdTmp, Monto)
SELECT CodEmp, SUM(TotalFinal)FROM Factura WHERE CodEmp='02'GROUP BY CodEmp


INSERT INTO #TmpTotales(IdTmp, Monto)
SELECT CodEmp, SUM(Total)FROM Boleta WHERE CodEmp='02'GROUP BY CodEmp


SELECT IdTmp, sum(Monto)as Total FROM #TmpTotales group by IdTmp
GO

Temina el Procedimiento Almacenado.
Acá ejecutamos el procedimiento almacenado.


EXEC PaTmpTotales

Última edición por Elmejor915; 12/02/2009 a las 15:38
  #4 (permalink)  
Antiguo 12/02/2009, 15:32
Avatar de Elmejor915  
Fecha de Ingreso: febrero-2009
Ubicación: Tarapoto
Mensajes: 14
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Fusionar 2 tablas con clausula UNION y agrupar el resultado - access2003 e

Bueno disculpa por haber puesto eso, no había leído que era en access 2003, el código que puse es para sql server 2000.
  #5 (permalink)  
Antiguo 12/02/2009, 15:35
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 10 meses
Puntos: 10
Respuesta: Fusionar 2 tablas con clausula UNION y agrupar el resultado - access2003 e

No te preocupes tio igual me ha servido para ver la utilidad de un procemiento almacenado, los cuales no utilizo, tendre que averiguar mas sobre lo sp

Si alguien tiene una idea de como solucionar mi problema?, por ahora voy a probar el codigo de jurena, espero resolver con eso


saludos
  #6 (permalink)  
Antiguo 12/02/2009, 16:29
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 10 meses
Puntos: 10
Respuesta: Fusionar 2 tablas con clausula UNION y agrupar el resultado - access2003 e

Cita:
Iniciado por jurena Ver Mensaje
Creo que algo así puede hacerse, pero sé si en Access te funcionará

SELECT (
(

SELECT SUM( importe_ingreso )
FROM tabla1 where... group by ...
) + (
SELECT SUM( importe_ingreso )
FROM tabla2 where... group by... )
) AS total
tio no funciona lo he probado en access2003 y en mysql en ambos me dice los mismo que falta la clausula EXIST o algo por estilo
Código:
SELECT (
(
SELECT  F.CodEmp, SUM( F.TotalFinal)
FROM Factura AS F WHERE F.CODEMP='02' GROUP BY F.CodEmp
)
 + 
 ( 
 SELECT B.CodEmp, SUM(B.Total)
FROM BOLETA AS B WHERE B.CODEMP='02' GROUP BY B.CodEmp
 ) 
) AS total

Última edición por franko1809; 12/02/2009 a las 16:47
  #7 (permalink)  
Antiguo 13/02/2009, 15:49
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 10 meses
Puntos: 10
Respuesta: Fusionar 2 tablas con clausula UNION y agrupar el resultado - access2003 e

al final solucione asi
Código:
SELECT codemp, sum(BAR)
FROM (
           SELECT codemp,totalfinal AS BAR FROM Factura
           UNION ALL
           SELECT codemp,total AS BAR FROM Boleta
          )
          AS A
GROUP BY codemp
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 14:29.