【发布时间】:2012-07-25 23:27:36
【问题描述】:
我编写了一个必须使用 CodeIgniter 执行的 SQL 查询。 我的查询是:-
SELECT COUNT('user_id') FROM tbl_tickets_replies WHERE user_id IN (SELECT id from tbl_users WHERE username IN (SELECT username FROM tbl_tickets WHERE site_referers_id =1))
我在我的模型中这样做
function getCommentNumbers() {
$sql = "SELECT COUNT('user_id') FROM tbl_tickets_replies WHERE user_id IN (SELECT id from tbl_users WHERE username IN (SELECT username FROM tbl_tickets WHERE site_referers_id =1))";
return $this->db->query($sql);
}
如何使用活动记录来做到这一点
它不工作:(
我有三个不同的表,它们是:-
tbl_users(id,username);
tbl_tickets(id,username,site_referers_id)
tbl_tickets_replies(id,user_id,comments)
我想要做的是选择属于具有 site_referers_id=1 的特定用户名的所有 cmets。 我想从具有 site_referes_id =1 的 tbl_tickets 中选择不同的用户名,然后从 tbl_users 获取所选用户名的 id 并使用该 id 来计算他有多少 cmets 并根据用户名显示它。 我的查询没有这样做,它显示所有用户的总 cmets,即 假设有两个用户 A 和 B,用户 id 1 和 2 有 10 和 15 个 cmets 那么它应该显示如下:
A 10
B 15
我的查询正在显示
A
B 25
【问题讨论】:
-
SELECT COUNT('user_id')不会像您认为的那样做。您的意思是SELECT COUNT(DISTINCT user_id)或SELECT COUNT(*),具体取决于您要执行的操作。 -
@MarkByers:先生,我已经编辑了我的问题
-
Codeigniter 的 AR 不支持子查询,因此您无法在没有任何技巧的情况下使用 AR。
标签: php mysql codeigniter