2011-07-31 4 views
0

두 개의 테이블 'events_archive'와 'demo_users'가 있습니다. 이벤트 테이블에서 각 이벤트는 고유 한 ref_id 값, demo_id 값 (이벤트에 참여한 논증 자의 사용자 ID) 및 client_id 값 (이벤트에 참여한 클라이언트의 사용자 ID)을가집니다. 데모 테이블에서 각 데모는 이벤트 표의 demo_id에 해당하는 고유 한 id 값을가집니다.CodeIgniter의 JOIN 문과 관련된 PHP 문제

내가 원하는 것은 특정 클라이언트가 수행 한 이벤트에 참여한 모든 데모 테이블을 나열하는 것입니다. 세션 데이터가있는 특정 클라이언트의 사용자 ID가 표시됩니다.

client_id 값이 4라고 말하면 이벤트를 공유 한 (즉 테이블에 행을 공유 한) 모든 개별 시위자를 나열하고 싶습니다. 나는 현재 내 CodeIgniter의 모델이 사용하고 있습니다

function demos($mid){  
    $this->db->select('demo_users.*'); 
    $this->db->from('demo_users'); 
    $this->db->join('events_archive','events_archive.demo_id = demo_users.id'); 
    $this->db->where('events_archive.client_id',$mid); 
    $this->db->limit(10); 
    $this->db->order_by('users_demonstrators.products_sold','asc'); 
    $demos = $this->db->get(); 
    foreach($demos->result() as $demo){ 
     echo $demo->first_name; 
    } 
} 

하지만 그 대신 개별적으로 시위대를 나열하는, 그것은 반복을 복제합니다. Demonstrator A, Demonstrator D, Demonstrator F 등을 나열하는 대신 Demonstrator A, Demonstrator A, Demonstrator A 등을 나열합니다. 어디에서 잘못 될지 아는 사람이 있습니까?

답변

1

$this->db->select('demo_users.*') 대신 $this->db->select('*')을 시도하고 대신 echo $demo->first_name;을 시도하십시오. var_dump($demo);을 시도하십시오.

내 생각에 Demonstrator A에는 events_archive에 많은 레코드가 있습니다. 두 테이블을 조인하면 events_archive의 일치하는 각 레코드에 demo_users의 열이 추가됩니다. 그래서 복수형 demo_users.*을 얻습니다. 그러나 레코드의 값은 events_archive.*입니다.

아마도 SELECT DISTINCT을 시도하고 싶을 것입니다.

+0

'$ this-> db-> distinct(); '를 추가했는데 완벽하게 작동했습니다. 감사 – hohner