Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   problemas con selects con union.. (https://www.clubdelphi.com/foros/showthread.php?t=63362)

nugame 11-02-2009 11:55:39

problemas con selects con union..
 
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 :
Código SQL [-]
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

Me da error en el paréntesis..
 
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í:

Código SQL [-]
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

Cita:

Empezado por nugame (Mensaje 338234)
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

Me sigue dando error en el select...
 
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.

Código SQL [-]
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

Nada caro igual...
 
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


La franja horaria es GMT +2. Ahora son las 19:06:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi