CodeIgniter中的JOIN语句的PHP问题

时间:2011-07-31 04:03:13

标签: php codeigniter join foreach

我有两个表:'events_archive'和'demo_users'。在事件表中,每个事件都有唯一的ref_id值,demo_id值(参与事件的演示者的用户ID)和client_id值(用户ID为参加活动的客户)。在演示表中,每个演示者都有一个唯一的id值,该值对应于事件表中的demo_id

我想要做的是列出参与特定客户所做事件的所有演示者(来自演示表)。我正在使用会话数据获取特定客户端的用户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;
   }
}

但不是单独列出示威者,而是一遍又一遍地复制它们。它不是列出示威者A,示威者D,示威者F等,而是列出示威者A,示威者A,示威者A等等。有人知道我哪里出错吗?

1 个答案:

答案 0 :(得分: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