2011-07-31 69 views
0

我有兩個表:'events_archive'和'demo_users'。在事件表中,每個事件具有唯一的值ref_id值,demo_id值(參與事件的演示者的用戶ID)和client_id值(參與事件的客戶的用戶ID)。在演示表中,每個演示器都有一個唯一的id值,該值對應於事件表中的demo_idCodeIgniter中JOIN語句的PHP問題

我想要做的是列出參與特定客戶所做的事件的所有示威者(從示範表中)。我使用會話數據獲取特定客戶的用戶ID。

所以說client_id值是4,我想列出所有共享一個事件(即在表中共享一行)的個別示威者。我目前在我的笨模型中使用這樣的:

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

但不必逐一列出示威,一遍又一遍地重複它們。而不是列出示威者A,示威者D,示威者F等等,它列出示威者A,示威者A,示威者A等。有人知道我要去哪裏出錯嗎?

回答

1

而不是$this->db->select('demo_users.*')嘗試$this->db->select('*')而不是echo $demo->first_name;嘗試var_dump($demo);

我的猜測是Demonstrator Aevents_archive有很多記錄。您加入這兩個表格,因此events_archive中的每個匹配記錄都會添加demo_users的列。這就是爲什麼你得到多個demo_users.* - 但記錄有不同的events_archive.*值。您可能想嘗試SELECT DISTINCT

+0

我添加了'$ this-> db-> distinct();'它完美地工作。謝謝 – hohner