我有两个表:'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等等。有人知道我哪里出错吗?
答案 0 :(得分: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。