【问题标题】:SQL Selecting rows with same value of foreign keySQL选择具有相同外键值的行
【发布时间】:2013-07-15 01:56:30
【问题描述】:

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

【问题讨论】:

    标签: sql relational-database


    【解决方案1】:

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

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

    1. 使用内部查询通过在 Item.SectorID = Sector.SectorID Where Item.value > T 上连接 Sector 和 Item 表来选择扇区.sectorid、Item.itemid 和 Item.value
    2. Sum(Item.value) 从上面的内部查询和 GROUP BY(SECTORID)、GROUPBY(ITEMID) 获得的结果。

    【讨论】:

    • 从扇区中选择扇区 ID(按扇区 ID 从项目组中选择总和(值))> 100;工作得很好。谢谢!
    【解决方案2】:

    您似乎想要一个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
                      )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      • 2016-11-11
      • 1970-01-01
      • 2021-09-21
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多