2013-10-10 2 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() function – Ts8060

+0

또한 [db-> query()] (http://ellislab.com/codeigniter/user-guide/database/queries.html)를 참조하십시오. – Anusha

+0

[ codeigniter subquery] (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)입니다. 필자는이 쿼리가 눈에 좀 더 쉬워 지도록 스타일을 지정했습니다.

당신은 "하지만 Active Records! D :를 사용하고 싶습니다."라고 생각할 수도 있지만, 고급 기능을 사용하려면 편안함 영역을 벗어나야합니다. 행운을 빕니다!

+0

오, 나는 그것을하는 종래의 이동 방식으로 돌아가는 것이 좋다. 문제의 진실 나는 여전히 어려운 SQL 쿼리를 얻지 못했습니다. ㅁㅁ – jrock2004