PDA

Ver la Versión Completa : problemas con selects con union..


nugame
11-02-2009, 11:55:39
Hola:

Tengo estos dos selects de dos tablas unidas con UNION y no logro que me sume dos referencias del articulo iguales

select hltickets.refarticulo, sum(hltickets.cantidad)
from hLTICKETS
group by 1
Union
select ltickets.refarticulo, sum(ltickets.cantidad)
from LTICKETS
group by 1


El resultado es:

REFARTICULO SUM
000010013 1
000010014 3
000010018 5
000010018 7
000010019 8

¿Hay alguna forma que me agrupe el refarticulo y me sume los dos?
Es decir que por ejemplo en el codigo
000010018 me ponga 12

Resultado seria
REFARTICULO SUM
000010013 1
000010014 3
000010018 12
000010019 8

Gracias por todo

hecospina
14-02-2009, 22:19:30
Hola
Que motor de base de datos utilizas
Con firebird puesde hacer esto :

SELECT refarticulo,SUM(CANTIDAD) AS CANTIDAD
FROM
(
select hltickets.refarticulo, sum(hltickets.cantidad) AS CANTIDAD
from hLTICKETS
group by 1
Union
select ltickets.refarticulo, sum(ltickets.cantidad) AS CANTIDAD
from LTICKETS
group by 1
)
GROUP BY REFARTICULO


Suerte

AzidRain
14-02-2009, 23:21:32
Es asi con cualquier motor hecos...Nugame, UNION es una especie de "cinta adhesiva" que pega el final de un query con el principio de otro. El motor no puede hacer ningún cálculo sobre el resultado final a menos que se lo haga como dice hecospina.

De cualquier forma puedes reexpresar el query para que te haga el cálculo mediante JOINS.

nugame
16-02-2009, 10:34:19
Hola:

En ese código me da error en el select hltickets dentro del paréntesis...

Utilizo el firebird y uuf no sé ya como puede hacerse..

gracias por todo

Caro
16-02-2009, 13:34:27
Hola nugame, prueba de hacerlo así:


Select refarticulo, Sum(cantidad)
From
(Select refarticulo, cantidad
From hLTICKETS
Union
Select refarticulo, cantidad
From LTICKETS)
Group By refarticulo


Si no te funciona solo poniendo en paréntesis el resultado del Union, puedes probar de ponerle un alias pero sin quitar esos paréntesis, pero debería funcionarte de esa forma.

Saluditos

Caro
16-02-2009, 13:53:29
En ese código me da error en el select hltickets dentro del paréntesis...


Lo que te ha puesto hecospia, también debería funcionarte, ¿que error te da?

Saluditos

nugame
16-02-2009, 16:39:02
Hola de nuevo:

Despues de probar:

Select refarticulo, Sum(cantidad)
From
(Select refarticulo, cantidad
From hLTICKETS
Union
Select refarticulo, cantidad
From LTICKETS)
Group By refarticulo


El error que me da es este:

Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, char 9.
Select.


Ese es el error que me produce.. y me lo indica en el select de dentro del paréntesis.

Uso el firebird 1.5 , ya no sé si eso influye o no..

A ver si me echais una mano.. Gracias por todo

Caro
16-02-2009, 16:51:14
Hola de nuevo, prueba poniendole un alias.


Select refarticulo, Sum(cantidad)
From
(Select refarticulo, cantidad
From hLTICKETS
Union
Select refarticulo, cantidad
From LTICKETS) Tmp
Group By refarticulo


Saluditos

nugame
16-02-2009, 17:17:51
Hola de nuevo:

Antes de nada gracias por la ayuda pero nada sigue dándome el mismo error..
Ufff .. ni idea ya...

Un saludo y a ver si hay suerte