第二个表中的Mysql计数
我有一个查询,它根据$oneid从等待表中获取所有用户。这很好,但我想计算一下用户留下了多少条消息。这些在另一张桌子上第二个表中的Mysql计数,mysql,codeigniter-2,Mysql,Codeigniter 2,我有一个查询,它根据$oneid从等待表中获取所有用户。这很好,但我想计算一下用户留下了多少条消息。这些在另一张桌子上 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
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 ) );
一张桌子
+----+--------+---------+---------+---------------------+
| 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 |
+----+--------+---------+---------+---------------------+
因此,我试图像这样计算来自一条消息的消息,但它为所有用户返回相同的值
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 ) );
您的子查询应该检查
用户id
,而不是post\u id
(它在one\u msg
中不存在,因此它取自wait
:
(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