SQL选择具有相同外键值的行

时间:2013-07-14 17:43:26

标签: sql relational-database

有没有人知道如何从具有相同FK值的表中选择所有行而不给出其值?我有一个仓库数据库。它在每个部门都有一定数量的部门和项目。我想用单个查询选择项目总值大于某个数字的行业。我希望查询是通用的 - 它应该总结仓库每个部门的项目的总体价值(没有规定的数量或者有多少部门)任何人都知道怎么做?我不需要一个完整的查询,只是一种方式来说我的数据库,它总结了某些部门的所有值。 SectorID是外键,Item是表(ItemID为公钥,Value为item的值)

2 个答案:

答案 0 :(得分:0)

我会使用一系列查询。基本上,这个问题可以解决如下:

假设Item和Sector表中都存在ID列。设为充当阈值 T 的值(如上所述由单个查询返回的特定数字):

  1. 使用内部查询通过连接Item.SectorID = Sector.SectorID,其中Item.value>上的Sector和Item表来选择sector.sectorid,Item.itemid和Item.value。的Ť
  2. 从上面的内部查询和GROUP BY(SECTORID),GROUPBY(ITEMID)获得的结果的Sum(Item.value)。

答案 1 :(得分:0)

您似乎想要group by查询。这是非常基础的,所以我假设你对SQL很新:

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

如果您想要这些行业中的项目,那么您可以使用joinin来获取该项:

select *
from warehouse w
where SectorId in (select SectorId
                   from warehouse
                   group by SectorId
                   having sum(itemValue) > YOURVALUEHERE
                  )