【问题标题】:Codeigniter 3 - Count rows from one table and joinCodeigniter 3 - 计算一张表中的行数并加入
【发布时间】:2015-07-10 18:24:22
【问题描述】:

我正在尝试加入两个表并计算 messageFiles 中与 message 相关的所有结果 我有以下结构的表:

消息

id
name
email
subject
message
date_added
read

消息文件

id
name
message_id
date_added

我正在尝试此代码,但我总是得到结果 countFiles = 1 并且我 message 为与之相关的每个文件重复(例如,如果我有消息的 3 个文件,它将重复 3 次)。此查询也不会选择没有文件的消息。似乎有什么问题?

$this->db->select("SQL_CALC_FOUND_ROWS *, messages.*, COUNT(messagesFiles.id) as countFiles", FALSE)->from('messages')
        ->join('messagesFiles', "messagesFiles.message_id = messages.id")
        ->where("messages.read", 1)
        ->group_by('messagesFiles.id')->get()->result_array();

【问题讨论】:

  • 您要返回多少行?去掉 COUNT() 和 group_by() 会得到多少行?
  • 总共有 8 行没有 COUNT() 和 group_by
  • 您如何使用 COUNT() 和 group_by 返回行数?
  • 14 - 这是 messageFiles 表中的行数。
  • 这没有意义......当你使用 group_by 时,你应该比不使用时少

标签: php mysql codeigniter codeigniter-3


【解决方案1】:

你可以试试下面这段代码并添加return $this->db->count_all_results()

http://www.codeigniter.com/docs

http://www.codeigniter.com/userguide2/database/active_record.html

public function count_test() {
    $this->db->select("*");
    $this->db->from('category c');
    $this->db->join('category_description cd', "cd.category_id = c.category_id");
    return $this->db->count_all_results();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-29
    • 2021-02-02
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 2011-02-01
    • 2012-11-03
    相关资源
    最近更新 更多