2011-12-04 4 views
0

나는 '도시'와 '정보'테이블이 두 개 있습니다.가입 쿼리 및 group_by

    city_id name 
        1   c1 
        2   c2 

가 그리고 정보가 정보 테이블 City_city_id에서

    id city_city_id status_status_id 
        1  1    1 
        2  2    1 
        3  1    2 

처럼 보이는 status_status_id이 FKS처럼 도시가 보인다. 특정 상태에있는 도시의 수를 계산하는 쿼리를 실행하고 싶습니다. 이를 위해 두 테이블에 합류했으며 '도시'테이블의 각 행에 대해 쿼리를 실행했지만 항상 대답 00을 얻습니다. 즉, 항상 특정 도시에서 도시의 수가 0 인 것을 나타냅니다.

  function count(){ 
      $this->db->select('*'); 
      $this->db->from('city'); 
      $this->db->join('info','info.city_city_id= city.city_id'); 
      $this->db->group_by('city_city_id'); 
      $sql=$this->db->get(); 
      if ($sql->num_rows()>0){ 

      foreach ($sql->result() as $row){ //loops through all the cities in city table 
      $r=1; 

     $this->db->where('city_city_id','city.city_id'); 

     $this->db->where('status_status_id', $r); 
     echo $this->db->count_all_results('info'); 


} 

내가 내 가입 GROUP_BY에 문제가 있다고 생각하지만 난이 오류를 찾을 수 없습니다 :

모델은 아래 줄입니다. 미리 감사드립니다.

답변

1

그래서 당신은

I want to run a query that would count the number of cities 
under a particular status. 

예.에, 당신은 상태 및 그 상태에 속하는 도시의 번호가 필요합니다. 권리? 그런 다음 SQL 쿼리는 당신을 위해 작동합니다

SELECT status_status_id, count(*) AS num_cities 
FROM info 
GROUP BY status_status_id 

이 결과를 줄 것이다 : 그런 다음

status_status_id num_cities 
     1    2 
     2    1 

를, 다음과 같이 사용할 수 있습니다 :

function count() { 
    $this->db->select('status_status_id, count(*) AS num_cities', FALSE); 
    $this->db->from('info'); 
    $this->db->group_by('status_status_id'); 

    $query = $this->db->get('mytable'); 
    foreach ($query->result() as $row) 
    { 
     echo 'STATUS_ID : ' . $row->status_status_id . "\n"; 
     echo 'NUM_CITIES: ' . $row->num_cities . "\n"; 
    } 
} 
+0

당신이 알려주십시오 수있는 장소 내 코드 나는 이것을 대체해야합니다. 감사합니다. – user1052462

+0

@ user1052462'count()'함수의 코드로 답을 편집했습니다. 나는 codeigniter를 모른다. 내가 여기서 제공 한 것은 문서를 참조하는 것이다. 따라서 구문 오류가있을 수 있지만 어쨌든 내 논리를 보여줍니다. – Jomoos