我如何将SQL查询连接两列和组的一列计数和每个连接表的一列到LINQ?

  • 本文关键字:一列 连接 LINQ SQL 查询 两列 c# sql-server linq
  • 更新时间 :
  • 英文 :


在我的数据库中,每个URI都有关联的标签(标签表),每个页面视图(pageview表)都与查看特定页面的人相关联。我想返回一个与给定URI具有相同标记的URI列表,通过计数共享这些标记的每个URI。我的SQL查询看起来像这样:

select count(URI) as 'Count', p.URI, t.Name
from tracking.PageView as p
inner join  Tracking.Tag as t on p.ID = t.PageViewID
where t.name in 
(select t.Name
from tracking.PageView as p
inner join  Tracking.Tag as t on p.ID = t.PageViewID
where p.URI = 'URI WE WANT TAGS OF'
)
and p.uri like '%/articles/%'
group by p.URI , t.name
order by Count desc

如果描述对查询来说太模糊或者查询本身很粗糙,我很抱歉。只是第一个成功了。我已经尝试将子查询分离为一个变量并在该子查询中选择值,但是自从我使用LINQ以来已经有一段时间了,我正在旋转轮子。

下面是当前SQL查询的准确翻译,应该可以让您开始。

from p in tracking.PageView
join t in Tracking.Tag on p.ID equals t.PageViewID
where p.uri.Contains("/articles/")
&& (
from p2 in tracking.PageView
join t2 in Tracking.Tag on p2.ID equals t2.PageViewID
where p2.URI == "URI WE WANT TAGS OF"
select t2.name
).Contains(t.name)
group new { p, t } by new { p.URI, t.name } into g
orderby g.Count() descending
select new {
Count = g.Count(),
g.Key.URI,
g.Key.Name
}

最新更新