2014-10-03 335 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