2012-03-30 14 views
2

私は、データベース内の4つのテーブル(ノート費用カテゴリ項目)を持っているため、クエリに参加します。表は、特定のカテゴリID 項目テーブルの上に非常に多くの項目がありますは、4つのテーブル

アイテムのフィールドを持っている

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

カテゴリの表は、ちょうど2つのフィールド カテゴリテーブルを持っていますフィールド

を持っていますid(primary key), cat_id(integer), category name(text)

ノートはテーブルは、各ショッピングノートの記録を持っているために使用されます。 ノートテーブルフィールド

note_id(primary key), date(DATE), total cost(integer)を持っています。外部キー 費用テーブルはフィールド

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

I入力を有するようテーブルはノートIDを使用して、特定の買い物メモの下で購入したアイテムおよびその対応する量と価格を格納するために使用される

費用日付から日付、そして特定のカテゴリまで、そのカテゴリの下のアイテムは、fromとto dateの間に購入されている必要があります。 は、私は出力が得られますクエリ必要があります。誰もが解決策で私を助けることができる

ITEM NAME   TOTALQTY   TOTALPRICE 
carrot    5kg     500 

を??

+0

を試します._id)及び内側などの項目は、C ON(A.name = C.item_name)及びCインナーD ON(C.Note_id = D._id) D.date1「との間のようにメモを登録しようとして、費用として費用をJOIN 2012- 01-01' と 『2012-03-31』とB.name = 『野菜』 – remss

+0

あなたはどのDBを使用していますか? –

+0

@remss:あなたはSUM()を使用する場合は、あなたが他の列にクエリでGROUP BYを使用する必要があります。 A.name、A.unit' BY 'GROUPを追加し、 – rikitikitik

答えて

3

INNERといった項目から和(C.unit)、A.unit、和(C.price)はB ON(A.category = BとしてカテゴリをJOIN、A.nameを選択し、この

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

おかげで解決してください与えることができます動作していません。私はそれを私の要求であるA.nameに置き換えました – remss

+0

おっと、答えを修正します – Phil

関連する問題