SQL Server:从表A中选择列,然后从表B中加入一个COUNT

时间:2019-03-20 12:05:47

标签: sql sql-server tsql

我正在寻找一个SQL查询,该查询可以在一个数据库事务中检索所有信息,而不必在C#代码中加载部分信息,然后启动子中继器以获取其余信息它的。

这些都是我尝试在其上执行查询的表的内容。

表A(这是产品目录)

ID : Product     : Description
-----------------------------------------------
1  : Apple       : This fruit grows on trees
2  : Cherry      : This fruit grows on a bush

表B(这是销售跟踪器)

ID : Sold
---------
1  : 15
1  : 10
2  : 13
1  :  8
2  :  5

我从查询中获得的理想结果将是

ID : Title   : Description                : Sold (Count)
---------------------------------------------------------
1  : Apple   : This fruit grows on trees  : 33
2  : Cheery  : This fruit grows on a bush : 18

到目前为止我得到了什么?我必须承认,我已经尝试了许多方法来实现这一目标,而这是我目前无法解决的问题。

SELECT 
    a.ID, a.Title, a.Description, 
    ISNULL(b.Sold, 0) AS SellCount
FROM 
    TableA a
LEFT JOIN
    (SELECT 
         COUNT(b.Sold), b.ID 
     FROM
         TableB b 
     WHERE
         b.ID = a.ID 
     GROUP BY
         b.Sold) AS b ON b.ID = a.ID

对于SQL Server中的更高级查询来说这是全新的,我将非常感谢任何帮助和指导。让我知道我是否可以对任何事物进行描述。

2 个答案:

答案 0 :(得分:1)

您可以使用:

SELECT a.ID, a.Title, a.Description, SUM(ISNULL(b.Sold,0)) as SellCount
FROM TableA a
LEFT JOIN TableB b On b.ID = a.ID 
Group By a.ID, a.Title, a.Description

答案 1 :(得分:0)

一种方法是在SELECT子句中使用相关子查询:

SELECT
      a.ID
    , a.Title
    , a.Description
    , (SELECT SUM(b.Sold) FROM TableB b WHERE b.ID = a.ID)
FROM TableA a;
相关问题