0

値を指定せずに、FK の同じ値を持つテーブルからすべての行を選択する方法を知っている人はいますか? 倉庫のあるデータベースがあります。セクターと、各セクターに特定の値のアイテムがあります。単一のクエリでアイテムの合計値が特定の数よりも大きいセクターを選択したい。そして、クエリを普遍的なものにしたい - 倉庫のすべてのセクターのアイテムの全体的な値を合計する必要があります (セクターの数やセクターの数を指定せずに) 誰もそれを行う方法を知っていますか? 完全なクエリは必要ありません。特定のセクターのすべての値を合計することをデータベースに伝える方法です。SectorID は外部キーで、Item はテーブルです (ItemID を公開キーとして、Value を item の値として)

4

2 に答える 2

0

group byクエリが必要なようです。これはかなり基本的なものなので、SQL の初心者だと思います。

select SectorId, sum(itemValue) as TotalItemValue
from warehouse w 
group by SectorId
having sum(itemValue) > YOURVALUEHERE;

セクター内のアイテムが必要な場合は、joinまたはで取得できinます。

select *
from warehouse w
where SectorId in (select SectorId
                   from warehouse
                   group by SectorId
                   having sum(itemValue) > YOURVALUEHERE
                  )
于 2013-07-14T17:56:30.370 に答える
0

クエリを組み合わせて使用​​します。基本的に、この問題は次のように解決できます。

Item テーブルと Sector テーブルの両方に ID 列が存在すると仮定します。しきい値T (上記のように単一のクエリによって返される特定の数値)として機能する値を考えます。

  1. Item.SectorID = Sector.SectorID Where Item.value > Tで Sector テーブルと Item テーブルを結合することにより、内部クエリを使用して、sector.sectorid、Item.itemid、および Item.value を選択します。
  2. 上記の内部クエリと GROUP BY(SECTORID)、GROUPBY(ITEMID) から得られた結果の Sum(Item.value)。
于 2013-07-14T17:54:08.970 に答える