我想用CI(使用PostgreSQL)计算一个活动记录查询的结果。我使用的是count_all_results()
,它对大多数查询都能正常工作,但在连接后使用distinct()
或group_by()
时就不行了,因为count_all_results()
忽略了这些函数。
这是一个修复,它还没有在最新的(2.1.3)稳定版本中实现。https://github.com/EllisLab/CodeIgniter/commit/b05f506daba5dc954fc8bcae76b4a5f97a7433c1
当我自己尝试在当前版本中实现此修复时,没有进行额外的过滤。行数保持不变。
关于如何在当前版本中实现这一点,或者如何计算distinct()
或group_by()
过滤的结果,有什么提示吗?
4条答案
按热度按时间gzszwxb41#
或
eni9jsuy2#
你可以用
否则
qojgxg4l3#
在我的例子中,到目前为止使用Codeigniter 3.1.11,在执行count_all_results()时,distinct()* 被 * 考虑在内。但是,您必须使用该函数,执行$this-〉db-〉select(“distinct x”),然后计数,不会对记录计数应用DISTINCT限制。
30byixjq4#
享受Codeigniter提供的语法糖可以是:
或
但请记住,呈现的SQL将是(根据您的db驱动程序有一些变化):
如果你的结果集不需要隔离不同的值,因为结果将被保证是唯一的,那么你可以简单地用途:
这个简单的代码将生成以下呈现的SQL:
无论您的实现如何,
count_all_results()
都将始终返回一个非负整数,而不必显式地通过名称引用列。