2014-10-03 336 views
-1

我有这个基本的sqlite3数据库。在我的商店表中,我专注于numberOfItems类别。例如,在我的PurchaseToStore表中,4个不同的商店购买玉米饼,其数量(numberOfItems)为5,55,55,55。我想要做的是计算这些值的总和。所以,(55 + 55 + 55 + 5)= 170在SQLITE中使用SUM函数

CREATE TABLE Store(

storeName VARCHAR(30), 
storeid INTEGER, 
PRIMARY KEY(storeid) 

); 

CREATE TABLE item(

itemName VARCHAR(30) , 
itemId INTEGER, 
PRIMARY KEY(itemId) 

); 


CREATE TABLE PurchasedToStore(

storeid INTEGER, 
itemId INTEGER, 
numberOfItems INTEGER, 
expirationMonth Integer, 
PRIMARY KEY(storeid, itemID), 
FOREIGN KEY(storeid) REFERENCES STORE(storeid), 
FOREIGN KEY(itemid) REFERENCES item(itemid) 

); 


INSERT INTO Store Store('Meijer', 1); 
INSERT INTO Store VALUES('Kroger', 2); 
INSERT INTO Store VALUES('Walmart', 3); 
INSERT INTO Store VALUES('Kmart', 4); 


INSERT INTO item VALUES('taco', 556); 
INSERT INTO item VALUES('burrito', 557); 
INSERT INTO item VALUES('cheese', 600); 

INSERT INTO STORE VALUES(1, 556, 5, 12); 
INSERT INTO STORE VALUES(2, 556, 55, 11); 
INSERT INTO STORE VALUES(3, 556, 55, 10); 
INSERT INTO STORE VALUES(4, 556, 55, 2); 

这是我要尝试这样做:

SELECT sum(numberOfItems) 
FROM item join purchasetostore 
WHERE storeid = itemid; 
+1

那么问题是什么?你试图得到什么输出? – Mureinik 2014-10-03 12:49:52

+0

“我想要做的是计算这些值的总和,所以(55 + 55 + 55 + 5)= 170。”我想总结已放入第三个表中的相同项目的所有NumberOfItems的值。我的回答只给了我55。 – 2014-10-03 12:51:37

+0

为什么不只是'SELECT SUM(numberofitems)FROM purchasetostore' - 这个连接似乎不是必须的。 – GarethD 2014-10-03 12:56:40

回答

2

这是一个有点不清楚最终目标是什么,但一稍微改变你的条件会得到你想要的总和。您需要匹配两个表中的itemid;

SELECT sum(numberOfItems) 
FROM item join PurchasedToStore 
WHERE item.itemid = PurchasedToStore.itemid; 

可能稍微有用的查询可能包括项目的项目名称和每个名称的总和;

SELECT item.itemname, sum(numberOfItems) 
FROM item join PurchasedToStore 
WHERE item.itemid = PurchasedToStore.itemid 
GROUP BY item.itemname; 

A simple SQLfiddle with both queries

+0

这给出了所需的输出,但是我真的不知道没有它的项目名称是多么有用,除非只有一个项目。无论如何,我反正是因为有用性不是回答者的工作。 – 2014-10-03 12:58:28

+0

这是一个非常有用的解决方案。 – 2014-10-03 13:07:33