Mysql 从第二个表中计数

标签 mysql codeigniter-2

我有一个查询,它根据 $oneid 从等待表中获取所有用户。这工作得很好,但我想计算用户留下了多少条消息。这些位于另一个表 one_msg 中。

function waiting_users($oneid)
    {

    $query_str ="SELECT a.user_id, b.email, b.username, b.fbook, c.user_id as saved_user, d.type as user_type,
                    FROM wait a 
                    LEFT JOIN users b ON a.user_id=b.id
                    JOIN user_profiles d ON a.user_id=d.user_id
                    LEFT JOIN save_one c ON a.user_id=c.user_id AND c.one_id=?
                    WHERE a.post_id = ? 
                    ORDER BY a.date ASC";
}
            $query = $this->db->query($query_str, array( $oneid, $oneid ) );

one_msg 表

+----+--------+---------+---------+---------------------+
| id | one_id | host_id | user_id | date                |
+----+--------+---------+---------+---------------------+
|  3 |    127 |     268 |     270 | 2012-06-11 18:57:58 | 
|  4 |    127 |     268 |     270 | 2012-06-11 21:45:11 | 
|  5 |    127 |     268 |     270 | 2012-06-12 09:10:01 | 
+----+--------+---------+---------+---------------------+

因此,我尝试像这样计算来自 one_msg 的消息,但它为所有用户返回相同的值。

function waiting_users($oneid)
    {

    $query_str ="SELECT a.user_id, b.email, b.username, b.fbook, c.user_id as saved_user, d.type as user_type,
                    (SELECT COUNT(id) FROM one_msg WHERE post_id = ?) AS count
                    FROM wait a 
                    LEFT JOIN users b ON a.user_id=b.id
                    JOIN user_profiles d ON a.user_id=d.user_id
                    LEFT JOIN save_one c ON a.user_id=c.user_id AND c.one_id=?
                    WHERE a.post_id = ? 
                    ORDER BY a.date ASC";

}
            $query = $this->db->query($query_str, array( $oneid, $oneid, $oneid ) );

最佳答案

您的子查询应检查 user_id 而不是 post_id(one_msg 中不存在,因此它取自 等待:

(SELECT COUNT(id) FROM one_msg m WHERE m.user_id = a.user_id) AS count

而不是

(SELECT COUNT(id) FROM one_msg WHERE post_id = ?) AS count

关于Mysql 从第二个表中计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10992070/

相关文章:

mysql - Kaminari 可以在同一个 Controller 定义中使用两次吗?

cookies - Codeigniter 2.1 $this->input->set_cookie($some_var);不工作

php - 导出到 CSV 时要操作数据吗?

php - 如何将 php 变量从 View (html)发送到 Controller

php - 如何修复我的脚本 : UPDATE user pass (php mysql) (no errors but something not working)

mysql - InnoDB 对 VARCHAR 列的 SELECT 查询非常慢

codeigniter - 在 CodeIgniter 站点上的 Chrome 中获取 SSL 加密错误

codeigniter-2 - Ion Auth ,获取所有当前登录的用户登录

php - Android Studio 注册表单

python - 数据库到数据框并获取有关填充列的信息