2012-01-02 62 views
6
SELECT a.id AS supplier, sum(processed_weight) AS total_qty 
FROM supplier_inward a 
INNER JOIN warehouseb ON a.id = b.supplier 
WHERE a.master_product_id = '38' 
GROUP BY b.supplier 

presentecómo hacerlo suma de suma en la consulta mysql salida

supplier total_qty 
12046  475.00 
12482  99.00 

salida necesaria

total_qty 
574.00 

aquí necesito la suma (total_qty) en esta consulta? cómo lograr esto

+1

¿Lo necesita como un complemento? fila en el mismo resultado? ¿O quieres ejecutar un segundo SELECT? –

+1

yup @a_horse_with_no_name – Ghostman

+2

* yup * qué? Hice dos preguntas. –

Respuesta

14

basta con modificar GROUP BY, añadiendo WITH ROLLUP:

SELECT a.id AS supplier, sum(processed_weight) AS total_qty 
FROM supplier_inward a 
    INNER JOIN warehouseb ON a.id = b.supplier 
WHERE a.master_product_id = '38' 
GROUP BY b.supplier 
    WITH ROLLUP 

Salida:

supplier total_qty 
12046  475.00 
12482  99.00 
NULL  574.00 
+2

+1 Aprende algo nuevo todos los días - CON ROLLUP - ¡gracias! – dash

+1

gracias perfectos ... – Ghostman

+2

+1 - ¡Extrañé totalmente que MySQL tenía CON ROLLUP también! Lo usé mucho en MSSQL 2005. ¡Funciona como un encanto! – Nonym

3

tratar

SELECT sum(processed_weight) AS total_qty 
FROM supplier_inward a 
INNER JOIN warehouseb ON a.id = b.supplier 
WHERE a.master_product_id = '38' 

EDIT 2 - Después del comentario de OP cambiar la estructura de resultados:

Para un intento columna adicional:

SELECT 
X.supplier, 
X.total_qty, 
(SELECT sum(processed_weight) 
FROM supplier_inward a 
INNER JOIN warehouseb ON a.id = b.supplier 
WHERE a.master_product_id = '38') AS totalq 
FROM 
(
SELECT 
a.id AS supplier, 
sum(processed_weight) AS total_qty, 
FROM supplier_inward a 
INNER JOIN warehouseb ON a.id = b.supplier 
WHERE a.master_product_id = '38' 
GROUP BY b.supplier) AS X 

Para una fila additonal:

SELECT 
a.id AS supplier, 
sum(processed_weight) AS total_qty 
FROM supplier_inward a 
INNER JOIN warehouseb ON a.id = b.supplier 
WHERE a.master_product_id = '38' 
GROUP BY b.supplier 
UNION ALL 
SELECT null, X.total_qty 
FROM 
( 
SELECT sum(processed_weight) AS total_qty 
FROM supplier_inward a 
INNER JOIN warehouseb ON a.id = b.supplier 
WHERE a.master_product_id = '38') AS X 
3

¿qué tal esto:

SELECT SUM(iQuery.total_qty) as iTotal 
FROM 
    (SELECT a.id AS supplier, sum(processed_weight) AS total_qty 
    FROM supplier_inward a 
    INNER JOIN warehouseb ON a.id = b.supplier 
    WHERE a.master_product_id = '38' 
    GROUP BY b.supplier) as iQuery 
1

intentarlo sin utilizar el grupo desde que desea sumar cada cosa

+0

dejando solo la parte 'GROUP BY' dará lugar a un mensaje de error ... – Yahia

+0

¿por qué es eso? cual error? – redmoon7777