【问题标题】:multiple select queries using primary and foreign key使用主键和外键的多个选择查询
【发布时间】:2014-06-19 18:03:28
【问题描述】:

我使用的是 SQL Server 2012。

我有两张桌子SalesCountrySales 大约有。 15 列,其中一个是主键,称为s_idCountry 有 5 列,包含一个外键,也称为 s_id

我想编写一个查询,它将仅选择 Sales 表中的记录,其中 s_id 在 Country 表中具有多个记录。然后从此查询返回的列表中执行另一个查询,该查询应仅返回字段usd_value > 0eur_value > 0 所在的行。 usd_valueeur_value 都是 Sales 表中的字段。

下面是一个简短的示例,希望对您有所帮助。

 Sales 
 s_id       usd_value      eur_value
 MN13       0              5
 MN14       0              0
 MN15       325            125
 MN28       320            0

 Country
 s_id     country
 MN13     NL
 MN13     FR
 MN14     GB
 MN14     US
 MN15     US
 MN28     CA
 MN28     US
 MN28     MX


 Result I would like to see
 s_id     usd_value     eur_value
 MN13     0             5
 MN28     320           0

【问题讨论】:

  • 好吧,我什至无法让第一个查询工作,从 MA_DEALS_COUNTRY 中选择 deal_id,count(deal_id) > 1
  • (从 MA_DEALS_COUNTRY 组中选择 deal_id,按 deal_id 的 count(deal_id) > 1)

标签: sql sql-server


【解决方案1】:

试试这个:

select s.* 
from sales s
where 
(
 s.eur_value > 0
 or 
 s.usd_value > 0
)
and s.s_id
in
(
 select s_id
 from country
 group by s_id
 having count(*) > 1
)

【讨论】:

    【解决方案2】:

    这样试试

    SELECT
        COUNT(c.[s_id]) Total,
        s.[usd_value],
        s.[eur_value]
    FROM Sales s
    LEFT JOIN Country c ON c.[s_id] = s.[s_id]
    GROUP BY s.[s_id]
    HAVING Total > 1
    AND (usd_value > 0 OR eur_value > 0)
    

    【讨论】:

      【解决方案3】:

      试试这个

      SELECT S.* FROM
       Sales S JOIN 
             (
               SELECT s_id,Count(s_id) From Country Group By s_id Having Count(s_id) > 1
              ) R On S.s_id = R.s_id
      Where S.usd_value > 0 Or S.eur_value >0
      

      Fiddle Demo

      输出:

      S_ID    USD_VALUE   EUR_VALUE
      MN13    0           5
      MN28    320         0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-17
        • 2014-06-12
        相关资源
        最近更新 更多