Проблема PHP с оператором JOIN в CodeIgniter - PullRequest
0 голосов
/ 31 июля 2011

У меня есть две таблицы: 'events_archive' и 'demo_users'.В таблице событий каждое событие имеет уникальное значение ref_id, значение demo_id (идентификатор пользователя демонстратора, который участвовал в событии) и значение client_id (идентификатор пользователя клиента, который участвовал всобытие).В таблице демонстраций у каждого демонстратора есть уникальное значение id, которое соответствует demo_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 Ответ

1 голос
/ 31 июля 2011

Вместо $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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...