Codeigniter子查询

时间:2013-10-10 00:43:22

标签: mysql codeigniter

正在寻找一些帮助,并找到一些但没有什么,因为FROM也是一个子查询。

SELECT COUNT(*) 
  FROM 
    ( SELECT tc.*, 
             ( SELECT status FROM test_case_executions tce 
                   WHERE tce.test_case_id = tc.id 
                   ORDER BY tce.execution_date DESC, tce.id DESC LIMIT 1 
             ) AS last_status FROM test_cases tc 
    ) a 
WHERE a.last_status = '$status'

CI中是否有一种方法可以使用它并执行它,或者有人可以帮助我按CI想要的方式编写它吗?谢谢

1 个答案:

答案 0 :(得分:1)

如上面评论中所述,您可以找到所需的一切here。只是为了让你开始,这是你可以做到的:

$this->db->query("
SELECT COUNT(*) AS amount
FROM (  SELECT tc.*,
        (   SELECT status
            FROM test_case_executions AS tce 
            WHERE tce.test_case_id = tc.id 
            ORDER BY tce.execution_date DESC, tce.id DESC
            LIMIT 1) AS last_status
        FROM test_cases AS tc 
    ) AS a 
WHERE a.last_status = ?
", array($status));

基本上这是评论所说的。是什么让这个“CI方便”比简单mysql_query等更让你逃避传递的值,让你自己摆脱错误和sql注入。请注意最后一部分?和第二个参数array($status)。我还认为这个查询在眼睛上更容易(imo)。

您可能会想“但我想使用Active Records!D:”,但是更高级的东西要求您离开舒适区。祝你好运!