Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Ayuda consulta SUM() sobre 2 tablas

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Ayuda consulta SUM() sobre 2 tablas Responder citando

Como puedo hacer una consulta para que me sume los valores obtenidos en 2 consultas con la clausula GROPU BY, he desistido de intentarlo pero no lo consigo.
CONSUTAS IMPLICADAS:
Código:

1.
SELECT CODHISTARTICULOS, FAMILIA, DESCRIPCION, SUM(UNIDADES) AS CANTIDAD
FROM TIQUETS_DET, HISTORICOARTICULOS
WHERE COD_ARTICULO = CODHISTARTICULOS
GROUP BY CODHISTARTICULOS, FAMILIA, DESCRIPCION;

2.
SELECT CODHISTARTICULOS, FAMILIA, DESCRIPCION, SUM(CANTARTICULOS) AS CANTIDAD
FROM DETALLESCOMANDA, HISTORICOARTICULOS
WHERE CODHISTORICO = CODHISTARTICULOS
GROUP BY CODHISTARTICULOS, FAMILIA, DESCRIPCION;


En ambas consultas existe una tercera tabla que guarda la descripciones de los codigos(CODHISTORICO, COD_ARTICULO) y cuyo campo clave es:CODHISTARTICULOS

he probado esto y no funciona
Código:

SELECT CODHISTARTICULOS, FAMILIA, DESCRIPCION, SUM(UNIDADES) +
(SELECT SUM(CANTARTICULOS)
FROM DETALLESCOMANDA, TIQUETS_DET
GROUP BY CODHISTORICO)
FROM DETALLESCOMANDA, TIQUETS_DET, HISTORICOARTICULOS
WHERE COD_ARTICULO = CODHISTARTICULOS
GROUP BY CODHISTARTICULOS, FAMILIA, DESCRIPCION;

esto tampoco funciona:
SELECT FAMILIA, DESCRIPCION, CODHISTARTICULOS,
((SELECT SUM(UNIDADES) FROM TIQUETS_DET GROUP BY COD_ARTICULO) +
(SELECT SUM(CANTARTICULOS) FROM DETALLESCOMANDA GROUP BY CODHISTORICO)) AS OLA
FROM HISTORICOARTICULOS
GROUP BY FAMILIA, DESCRIPCION, CODHISTARTICULOS;


Con la UNION de las tablas obtengo los resultados pero tengo duplicidades con el campo CODHITARTICULOS, es decir no obtengo una AGRUPACIÓN correcta de las dos tablas:
Código:

SELECT CODHISTARTICULOS, DESCRIPCION, SUM(UNIDADES)
FROM TIQUETS_DET, HISTORICOARTICULOS
WHERE COD_ARTICULO = CODHISTARTICULOS
GROUP BY CODHISTARTICULOS, DESCRIPCION
UNION ALL
SELECT CODHISTARTICULOS, DESCRIPCION, SUM(CANTARTICULOS)
FROM DETALLESCOMANDA, HISTORICOARTICULOS
WHERE CODHISTORICO = CODHISTARTICULOS
GROUP BY CODHISTARTICULOS, DESCRIPCION;

_________________
Muchos hombres no se equivocan jamás porque no se proponen nada razonable.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Prueba en el segundo código que has puesto con SELECT DISTINCT. Además te falta identificar de que tabla sale cada campo. Por ejemplo:
Código:
SELECT DISTINCT A.CODHISTARTICULOS, A.FAMILIA, A.DESCRIPCION, SUM(A.UNIDADES) SUMUNI, SUM(B.CANARTICULOS) SUMCAN
FROM DETALLESCOMANDA A, TIQUETS_DET B
WHERE B.COD_ARTICULO = A.CODHISTARTICULOS
GROUP BY CODHISTARTICULOS, FAMILIA, DESCRIPCION

Sin saber de que campo es cada tabla, prueba una cosa así o indca que campo se de cada tabla.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

NO.
Lo que busco es el resultado de la ultima consulta y agrupados por suma de cantidades sin tener repetido ningun registro de codigo y descripcion.

Lo he SOLUCIONADO creando dicha consulta en un procedimiento almacenado y luego haciendo un SELECT AGRUPADO de dicho procedimiento.

Así quedo, y el resultado es perfecto:
Código:

/*Primero creo el procedimiento en el servidor*/
CREATE PROCEDURE AGRUPADO
RETURNS (
    CODIGO INTEGER,
    FAMILIA VARCHAR (10) CHARACTER SET NONE,
    DESCRIPCION VARCHAR (106) CHARACTER SET NONE,
    CANTIDAD INTEGER)
ASBEGIN
  /* Procedure body */
    FOR SELECT CODHISTARTICULOS, FAMILIA, DESCRIPCION, SUM(UNIDADES) AS CANTIDAD
    FROM TIQUETS_DET, HISTORICOARTICULOS
    WHERE COD_ARTICULO = CODHISTARTICULOS
    GROUP BY CODHISTARTICULOS, FAMILIA, DESCRIPCION
    UNION ALL
    SELECT CODHISTARTICULOS, FAMILIA, DESCRIPCION, SUM(CANTARTICULOS) AS CANTIDAD
    FROM DETALLESCOMANDA, HISTORICOARTICULOS
    WHERE CODHISTORICO = CODHISTARTICULOS
    GROUP BY CODHISTARTICULOS, FAMILIA, DESCRIPCION
    INTO :CODIGO, :FAMILIA, :DESCRIPCION, :CANTIDAD
    DO SUSPEND;
END


Luego puedo hacer consultas agrupadas como:
Código:

SELECT CODIGO, FAMILIA, DESCRIPCION, SUM(CANTIDAD) AS CANTIDAD
FROM AGRUPADO
GROUP BY CODIGO, FAMILIA, DESCRIPCION ORDER BY CODIGO;

_________________
Muchos hombres no se equivocan jamás porque no se proponen nada razonable.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.