正在寻找帮助,但从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希望的方式编写它?谢谢

最佳答案

如上面的注释中所述,可以真正找到您需要的所有内容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));


基本上,这就是评论所要表达的。比起简单的mysql_query等,使之更“ CI方便”的是,您正在转义传递的值以使自己摆脱错误和sql注入。请注意最后一部分?和第二个参数array($status)。我还设置了此查询的样式,使它看起来更简单(imo)。

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

07-25 23:01
查看更多