程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Have() 对连接表的 id 计数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Have() 对连接表的 id 计数?

开发过程中遇到Have() 对连接表的 id 计数的问题如何解决?下面主要结合日常开发的经验,给出你关于Have() 对连接表的 id 计数的解决方法建议,希望对你解决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,请注明来意。