2013-10-10 67 views
0

正在尋找一些幫助,並找到一些但什麼都沒有,當FROM也是子查詢。Codeigniter子查詢

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的方式編寫它?謝謝

+4

$ this-> db-> query()函數 – Ts8060

+0

另請參閱[db-> query()](http://ellislab.com/codeigniter/user-guide/database/queries.html) – Anusha

+0

還有[ codeigniter子查詢](https://github.com/EllisLab/CodeIgniter/wiki/Subqueries)。但它有點複雜。 – Anusha

回答

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)); 

基本上這就是評論的意思。是什麼讓這個比簡單的mysql_query等更「CI方便」的是,你正在逃避傳遞的值,以免錯誤和sql注入。請注意最後一部分?和第二個參數array($status)。我也稱這個查詢在眼睛上更容易一些(imo)。

您可能會認爲「但我想使用Active Records!D:」,但更高級的東西需要您離開舒適區。祝你好運!

+0

哦,我很好,回到傳統的做法。事實的真相我還沒有得到更困難的SQL查詢。 Thaanks – jrock2004