我正在寻找一个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中的更高级查询来说这是全新的,我将非常感谢任何帮助和指导。让我知道我是否可以对任何事物进行描述。
答案 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;