大佬教程收集整理的这篇文章主要介绍了Have() 对连接表的 id 计数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在 Ormlite 中进行此查询:
SELEct b.* from blog b
join blog_to_blog_category btbc on b.ID = btbc.blog_ID
join blog_category bc on btbc.blog_category_ID = bc.ID
where b.url like '%.com' and bc.ID in (100,583)
group by b.ID
having count(disTinct bc.ID ) = 1
我不知道如何构建 Have() 方法。我可以看到有一个 sql.CountdisTinct()
方法,但我不知道如何将它与 Had() 一起使用。
我想我需要做一些类似的事情:
var q = db
.From<Blog>()
.leftJoin<BlogToBlogcategory>()
.Join<BlogToBlogcategory,Blogcategory>()
.Where<Blogcategory>(x => sql.In(x.ID,100,583))
.GroupBy<Blog>(bc => bc.ID)
.Having(x => sql.CountdisTinct("blog_category.ID") == "2")
这给出了错误:
42883:运算符不存在:bigint = text
我看不到如何键入它以获取表列名并返回一个数字进行比较。
这个查询可以吗?
编辑
我通过明确设置表达来解决这个问题
q.HavingExpression = $"having count(disTinct {q.table<Blogcategory>()}.{q.column<Blogcategory>(bc => bc.ID)}) = 2";
我仍然很好奇是否可以使用 fluent API 来做到这一点。
我刚刚在最新的 v5.11.1 中为 Having()
添加了多个类型表重载,现在是 available on MyGet 这将允许您在类型化表达式中引用连接表属性,例如:>
var q = db
.From<Blog>()
.LeftJoin<BlogToBlogCategory>()
.Join<BlogToBlogCategory,BlogCategory>()
.Where<BlogCategory>(x => Sql.In(x.Id,100,583))
.GroupBy<Blog>(bc => bc.Id)
.Having<BlogCategory>(x => Sql.CountDisTinct(x.Id) == 2)
以上是大佬教程为你收集整理的Have() 对连接表的 id 计数全部内容,希望文章能够帮你解决Have() 对连接表的 id 计数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。