2013-04-17 40 views
0

我想知道如何做到这一点!!!如何使用MySQL做一个不同查询的总和

现在: 我有卖家通过分组,分别提供宠物

的宠物是一个表名PetTable(PETCode和PETName)

CREATE TABLE PetTable ( 
PETCode VARCHAR(16) UNIQUE NOT NULL, 
PETName VARCHAR(32) NOT NULL 
); 
INSERT INTO PetTable (PETCode, PETName) VALUES 
('Pet1','Black Cat'), 
('Pet2','Big Dog'), 
('Pet3','Gold Fish'), 
('Pet4','Parlot'), 
('Pet5','Bird'), 
('Pet6','Small Dog'); 

卖方都存储在SellerTable(CodeSeller和NameSeller)

CREATE TABLE SellerTable ( 
CodeSeller VARCHAR(16) UNIQUE NOT NULL, 
NameSeller VARCHAR(32) NOT NULL 
); 
INSERT INTO SellerTable (CodeSeller, NameSeller) VALUES 
('Seller0','John '), 
('Seller1','Paul '), 
('Seller2','David '), 
('Seller3','James '); 

卖方与使用SalesTable有3场(PETCode,CodeSeller,数量)

CREATE TABLE SalesTable ( 
PETCode VARCHAR(16) NOT NULL, 
CodeSeller VARCHAR(16) NOT NULL, 
Quantity INT NOT NULL 
); 
INSERT INTO SalesTable (PETCode, CodeSeller, Quantity) VALUES 
('Pet1', 'Seller0', '9'), 
('Pet2', 'Seller0', '81'), 
('Pet3', 'Seller0', '7'), 
('Pet4', 'Seller1', '63'), 
('Pet5', 'Seller1', '4'), 
('Pet6', 'Seller1', '50'), 
('Pet2', 'Seller2', '61'), 
('Pet5', 'Seller2', '72'), 
('Pet4', 'Seller3', '83'), 
('Pet2', 'Seller3', '94'), 
('Pet1', 'Seller3', '8'); 

我的查询是很简单的宠物有关的,怎么知道每只宠物的销售总和! 什么是PET1,PET2,PET3的所有销售的总和......和去...

谢谢您的宝贵帮助...

+0

user'group by'勾选这个http://sqlfiddle.com/#!2/fd60f/6 – Rafee

回答

0

你需要加入PetTableSalesTable,与PetTable.PetCode = SalesTable.PetCode,并且由于它们共有的列具有相同的名称,你可以使用一个NATURAL JOIN

SELECT PETName, SUM(Quantity) 
FROM PetTable NATURAL JOIN SalesTable 
GROUP BY PETName 

请参阅小提琴here

或者,如果你只需要通过PETCode综上所述,你不感兴趣的宠物的名字,你可以使用这个没有加入:

SELECT PETCode, SUM(Quantity) 
FROM SalesTable 
GROUP BY PETCode 
0

您需要先加入的表。由于您对SellerName不感兴趣,因此使用LEFT JOIN加入表PetTable与表SalesTable即可满足您的需求。

在我的查询中使用LEFT JOIN而不是INNER JOIN的原因是因为它仍然包含尚未销售的Pets

SELECT a.PETCode, 
     a.PETName, 
     SUM(b.Quantity) TotalSold 
FROM PetTable a 
     LEFT JOIN SalesTable b 
      ON a.PETCode = b.PETCode 
GROUP BY a.PETCode, a.PETName 

为了进一步获得更多的知识有关加入,请访问以下链接:

输出

╔═════════╦═══════════╦═══════════╗ 
║ PETCODE ║ PETNAME ║ TOTALSOLD ║ 
╠═════════╬═══════════╬═══════════╣ 
║ Pet1 ║ Black Cat ║  17 ║ 
║ Pet2 ║ Big Dog ║  236 ║ 
║ Pet3 ║ Gold Fish ║   7 ║ 
║ Pet4 ║ Parlot ║  146 ║ 
║ Pet5 ║ Bird  ║  76 ║ 
║ Pet6 ║ Small Dog ║  50 ║ 
╚═════════╩═══════════╩═══════════╝ 
相关问题