Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Funcionar 2 tablas y agrupar el resultado

Estas en el tema de Funcionar 2 tablas y agrupar el resultado en el foro de Visual Basic clásico en Foros del Web. Tengo 2 tablas FACTURA y BOLETA, quiero agrupar el total de ventas por CodEmp. El problema es que arroja los resultados de la boleta y ...
  #1 (permalink)  
Antiguo 12/02/2009, 19:47
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Pregunta Funcionar 2 tablas y agrupar el resultado

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

El problema es que arroja los resultados de la boleta y factura por separado

Código:
Private Sub cmdResumen_Click()

SQL2 = "SELECT F.codemp,SUM(F.totalfinal) AS TotalFinal FROM Factura AS F"
SQL2 = SQL2 & " WHERE F.CodEmp BETWEEN '02' AND '02' GROUP BY F.codemp"

SQL2 = SQL2 & " UNION "

SQL2 = SQL2 & "SELECT B.codemp,SUM(B.total) AS TotalFinal  FROM Boleta AS B"
SQL2 = SQL2 & " WHERE B.CodEmp BETWEEN '02' AND '02' GROUP BY B.codemp"

Set rsRempleado = dbConex.Execute(SQL2)
  
'Mostramos el reporte
Set drEmpleadoVresumen.DataSource = rsRempleado
drEmpleadoVresumen.Show 1
End Sub
Por ejemplo en este caso me devuelve

CodEmp-total
02-100
02-500

Yo quiero me muestre todo junto ó si hay alguna forma de solucionarlo con el datareport?
02-600

  #2 (permalink)  
Antiguo 13/02/2009, 08:49
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: Funcionar 2 tablas y agrupar el resultado

Qué tal?

Creo que no hay ninguna cláusula que haga lo que quieres con una única instrucción, ya que UNION lo que hace es devolver juntos los resultados de todas las consultas que concatenan, sin devolver realmente una tabla.

La solución más inmediata sería meter los datos de cada tabla en una temporal (con INTO TEMP o con CREATE TEMP TABLE; da igual porque de todas formas tienes que ejecutar varias sentencias) y luego sacar los datos de ahí.

O bien guardar una vista que sea la instrucción tal cual la tienes y utilizar una SELECT simple para extraer los datos.
__________________
wile sona li mute e sona
  #3 (permalink)  
Antiguo 13/02/2009, 09:03
Avatar de devel  
Fecha de Ingreso: mayo-2008
Mensajes: 20
Antigüedad: 16 años
Puntos: 0
Respuesta: Funcionar 2 tablas y agrupar el resultado

Que tal si intentas esto?

SELECT
F.codemp,
SUM(F.totalfinal) + SUM(B.total)
AS TotalFinal FROM
Factura INNER JOIN
Boleta
on
Factura.CodEmp = Boleta.CodEmp
WHERE Factura.CodEmp BETWEEN '02' AND '02' GROUP BY F.codemp
  #4 (permalink)  
Antiguo 13/02/2009, 12:33
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Funcionar 2 tablas y agrupar el resultado

Txoco tio dejame revisar lo que dices.

devel tu idea parecia que me iba a solucionar la vida pero no?, esto sucedio

Lo hize de esta manera
Código:
SELECT F.codemp, SUM(F.totalfinal)+SUM(B.total) AS TotalFinal
FROM Factura AS F INNER JOIN Boleta AS B ON F.CodEmp=B.CodEmp
WHERE F.CodEmp='05'
GROUP BY F.codemp;
El resultado es: 2100 , se fusionaron las tablas pero la suma la hizo mal y no entiendo por q?
En la base de datos tengo esto

El resultado deberia ser 800 y no 2100?

alguien tiene ó existe alguna solucion facil?

Txoco tendre q complicarme la vida y averiguar como hacer lo q dices, mi bd esta en access2003
  #5 (permalink)  
Antiguo 13/02/2009, 13:25
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Funcionar 2 tablas y agrupar el resultado

Revisa este tema, parece que es algo así lo que buscas:
http://www.forosdelweb.com/f87/unir-...ultado-409430/
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 13/02/2009, 15:30
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Funcionar 2 tablas y agrupar el resultado

Gracias tio eso era lo que necesitaba funciona al 100%
Al final quedo asi, funciona para access2003 y mysql
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
Una ultima cosa aunque quizas sea otro tema.
La consulta anterior funciona bien en access2003 pero despues de guardarla le cambia la sintaxis, solo un poco
Código:
SELECT codemp, sum(BAR)
FROM [SELECT codemp,totalfinal AS BAR FROM Factura
     UNION ALL
     SELECT codemp,total AS CAR FROM Boleta
     ]. AS A
GROUP BY codemp
Esta ultima sintaxis que leva conchetes [] ademas de un punto antes del AS, no funciona en mysql, a que se debe, acaso los corchetes ya no se usan actualmente?

Logico que cada bd tiene su sintaxis, pero seria un problema si utilizo los corchetes aunque no le veo necesidad ya que tengo la sintaxis de mysql que funciona en access2003, es solo una observacion

saludos
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 06:49.