2011-03-08 24 views
6

Böyle bir tablo var MySQL sonucunun son sırada toplam alın:MySQL: Örneğin

product | quantity | something 
------------------------------- 
abc | 5  | 2 
xzy | 5  | 2 
asd | 10  | 2 

Ben 3 sonuç böyle yapmak ve almak tüm kayıt gerektiğinde:

select * from tableName 

Ama toplam miktar (50) ve bir şey (6) için 4. sıra almak istiyorum. Sql sorgusunda mümkün mü yoksa sorgulamadan sonra toplamı elde etmek için sonucumu çözmem gerekiyor mu? Mümkünse bunu sorguda yapmak istiyorum.

+0

sana bir 'SUM()' deyimi (tekrar isteğinizi çalıştırmak gerektiğini düşünüyorum bkz http://www.tizag.com/mysqlTutorial/mysqlsum.php) – Tsadiq

cevap

14
(SELECT product, 
     quantity, 
     something 
FROM tablename) 
UNION 
(SELECT "all"   AS product, 
     SUM(quantity) AS quantity, 
     SUM(something) AS something 
FROM tablename) 

Bu, çalışma sorgusu. Bu sizin sonucu sonunda istenilen şekilde

1
 
$q="select sum(quantity), sum(something) from tableName"; 
1

bu çözmek için en iyi yol değil dördüncü satır katacak ama hile yapmak gerekir

select product, quantity, something from tableName 
union 
select 'sum', sum(quantity), sum(something) from tableName 
2

Yapabilirsin

SELECT Product, Quantity, Something 
FROM TABLENAME 

UNION 

SELECT 'ALL', SUM(Quantity),SUM(Something) 
FROM TABLENAME 

Ancak bu, tablonuza bir satır eklemez. Zaten hangisi iyi bir fikir değil.

9

Sen toplamları oluşturmak için toplamasını kullanabilirsiniz, ancak bu gibi bir toplama işlevi olarak değiştirmek zorunda:

SELECT product, sum(quantity), sum(something) 
FROM tableName 
GROUP BY product WITH ROLLUP