首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算sql server表中的元素数。

计算sql server表中的元素数。
EN

Stack Overflow用户
提问于 2011-05-01 09:31:44
回答 3查看 1K关注 0票数 1

我有两张桌子,看起来像这样:

文章表:

输出应该如下所示:

如何使用sql查询(我使用的是sql server 2005)和使用linq到sql查询来完成这一任务?

顺便说一句,我在Visual 2008中使用的是server 2005,asp.net和c#。

请帮帮我

期待中的感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-01 10:51:29

更新:添加了Linq,如果需要外部连接,可以使用它。

内连接

为了一个内在的连接.只有拿回至少买了一次的物品,你才能使用下面的内容。

LINQ 2 SQL

代码语言:javascript
运行
复制
from a in Articles
join c in CustomersRecords on 
     a.Article_Name equals c.Article_Name 
group a by new {a.SNo, a.Article_Name} into g
select new 
       {
         SNo = g.Key.SNo, 
         Article_Name = g.Key.Article_Name, 
         Total_Items_Bought = g.Count()
       }

以上转换为以下SQL

代码语言:javascript
运行
复制
SELECT COUNT(*) AS [Total_Items_Bought], [t0].[SNo], [t0].[Article_Name]
FROM [Articles] AS [t0]
INNER JOIN [CustomersRecord] AS [t1] ON [t0].[Article_Name] = [t1].[Article_Name]
GROUP BY [t0].[SNo], [t0].[Article_Name]

当你被清理干净的时候

代码语言:javascript
运行
复制
SELECT a.SNo, 
       a.Article_Name, 
       COUNT(*) AS Total_Items_Bought
  FROM Articles AS a
 INNER JOIN CustomersRecord AS c ON a.Article_Name = c.Article_Name
 GROUP BY a.SNo, a.Article_Name

左外加入

左外接(左)收回所有的文章事件,那些从来没有买过,你可以使用以下。

LINQ 2 SQL

代码语言:javascript
运行
复制
from a in Articles
join c in CustomersRecords on 
     a.Article_Name equals c.Article_Name into apc
select new 
       {
         SNo = a.SNo, 
         Article_Name = a.Article_Name, 
         Total_Items_Bought = apc.Count()
       }

这将转换为以下SQL

代码语言:javascript
运行
复制
 SELECT [t0].[SNo], [t0].[Article_Name], (
    SELECT COUNT(*)
    FROM [CustomersRecord] AS [t1]
    WHERE [t0].[Article_Name] = [t1].[Article_Name]
    ) AS [Total_Items_Bought]
 FROM [Articles] AS [t0]
票数 2
EN

Stack Overflow用户

发布于 2011-05-01 09:41:18

代码语言:javascript
运行
复制
select 
  A.SNo,
  A.Article_Name,
  count(C.Article_Name) as Total_Items_Bought
from Articles as A
  left outer join CustomersRecord as C
    on A.Article_Name = C.Article_Name
group by A.SNo, A.Article_Name    
order by A.SNo
票数 2
EN

Stack Overflow用户

发布于 2011-05-01 09:39:02

将此用于SQL

代码语言:javascript
运行
复制
SELECT 
   SNO,Article_Name, 
   (SELECT COUNT(*) FROM CustomersRecord AS cr 
    WHERE cr.Article_Name = Article_Name) AS Total_Items_Bought 
FROM ARTICLES
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5847593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档