2012-03-30 62 views
2

我在我的數據庫中的四個表(筆記費用類別項目)。如何使用內部聯接查詢四個表

項目表將有特定的類別ID這麼多項目 項目表字段有

id(primary key), item name(text), unit(text), category id(foreign key)

表將只有兩個字段 類別表字段有

id(primary key), cat_id(integer), category name(text)

筆記表用於記錄每個購物通知。 筆記表有字段

note_id(primary key), date(DATE), total cost(integer)

費用表用於使用筆記id作爲外鍵 費用表中有場

id(primary key), note_id(foreign key), quantity(integer), price(integer), item_name(text)

存儲特定購物記下購買的物品和相應的數量和價格。當我輸入從開始日期到最新日期以及特定類別,我需要該類別下的商品,這些商品是從迄今爲止購買的。 我需要一個查詢,將輸出爲:

ITEM NAME   TOTALQTY   TOTALPRICE 
carrot    5kg     500 

任何人都可以幫我解決?

+0

選擇A.name,總和(C.unit),A.unit,總和(C.price),爲INNER JOIN類別爲B ON(A.category = B ._id)和作爲A INNER JOIN費用的項目作爲C ON(A.name = C.item_name)並將開支視爲C INNER JOIN註釋爲D ON(C.Note_id = D._id) where D.date1 between'2012- 01-01'和'2012-03-31'和B.name ='Vegetables' – remss 2012-03-30 05:08:36

+0

你在使用哪個數據庫? – 2012-03-30 05:15:22

+0

@remss:當您使用SUM()時,您必須在其他列上的查詢中使用GROUP BY。添加'GROUP BY A.name,A.unit',看看會發生什麼 – rikitikitik 2012-03-30 05:17:57

回答

3

從項嘗試此

select A.name, sum(C.unit), A.unit, sum(C.price) 
from items as A 
    INNER JOIN categories as B ON A.category=B._id 
    INNER JOIN expenses as C ON A.name=C.item_name 
    INNER JOIN notes as D ON C.Note_id=D._id 
where 
    D.date1 between '2012-01-01' and '2012-03-31' and B.name='Vegetables' 
group by 
    A.name, A.unit 
+0

非常感謝d幫助......而不是使用C.unit,C。價格我取代它是A.name這是我的要求 – remss 2012-03-30 06:32:42

+0

哎呀,將解決答案 – Phil 2012-03-30 06:33:09