2011-09-08 10 views
1

私は2つのテーブルを持っています:ファンドとアイテム。アイテムには、ファンドテーブルのIDに関連する「fundID」というフィールドがあります。アイテムには価格フィールドもあります。ここで相関サブクエリを使用したSQL Sum()

2つのテーブルの簡単な例です:

FUND 
ID fundName 
1  maintenance 
2  books 
3  development 
4  media 


ITEMS 
ID price fundID 
1  $10  2 
2  $20  4 
3  $5   4 
4  $8   1 
5  $10  3 
6  $12  4 

私はを通じてその資金に接続されている項目のために私に各ファンドの名称およびすべての価格の合計を与えるクエリを作成したいです資金IDフィールド。私はいくつかの方法を試してみましたが、SUM()内の相関サブクエリやWHERE内でもエラーが発生しています。

誰かが正しい方向に向けることができたら、私はそれを感謝します。

+0

sql server?私のSQL?オラクル?バージョン ?常に役立ちます:-) – EBarr

+0

実際にSharePoint 2010には、アクセスフロントエンドのリストがあります。実際のSQLサーバはMS SQLです(どのバージョンか分かりません)。 – penco

答えて

3

この試してみてください:あなたは資金ファンドIdの多くを持っている場合は、この

select fundName,sum(price) as TotPrice 
from Funds f 
join Items g on g.id=f.id 
group by f.fundName 
+0

+1神は、あなたは私にそれを打つ! – Icarus

+0

JOINをLEFT JOINに変更し、魅力的に働きました。ありがとう! – penco

+0

コードのSELECT部分​​にさらにフィールドを入力すると、なぜ機能しなくなるのですか?たとえば、f.fundCodeとfund.fundCodeはどちらも異なるエラーメッセージを出します。 – penco

0

は、おそらくへの正当な理由はありません

0
SELECT f.fundid, f.fundName, SUM(price) 
FROM Fund f 
    INNER JOIN ITEMS i ON i.fundId = f.fundId 
GROUP BY f.FUNDID 

を試してみてください

SELECT f.fundname, 
     SUM(i.price) 
FROM fund f 
     JOIN items i 
     ON i.fundid = f.id 
GROUP BY f.fundname 
2

によってグループに優れていますあなたのテーブル構造を考えれば、このようにしてください。しかし、質問はサブクエリについて質問し、テーブル構造は単純化されています。 straightfoward COALESCE/LEFT JOINを

SELECT f.fundname, 
     coalesce(i.price,0) price 
FROM fund f 
     LEFT JOIN (SELECT fundid, 
          SUM(price) price 
        FROM items i 
        GROUP BY fundid) i 
     ON f.fundid = i.fundid 

注BY /グループに参加するよう

は、これはあなたが何もありません資金のために0にしたい場合があり、同じ結果が得られます。

関連する問題