2016-03-16 2 views
0

У меня есть 3 таблицы, где первый для пользователя. В двух других случаях у меня есть id_user, для продукта, который создал или активировал тех, кто создал. Как я могу показать все данные из этих двух таблиц с обоими именами? Я выясняю, как присоединиться к двум таблицам, но третий я присоединился дважды, и я не знаю, как это сделать. Это пример для двух таблиц:codeigniter select join дважды из той же таблицы

 $query=$this->db->select('*') 
       ->from('activation') 
       ->join('products','products.id_pro = activation.id_pro') 
       ->order_by('id_key','DESC') 
       ->get(); 

активации Таблица содержит столбец с user_a идентификатор пользователя, а продукт имеет столбец user_p с идентификатором пользователя. Иногда такой же пользователь иногда нет. Любая помощь?

ответ

2

Heres, как я это делаю, используя псевдонимы. Вы тоже можете отформатировать его.

$this->db->select('tb1.*,tb2.*,u.*'); 
$this->db->join('table1name tb1','tb1.id = u.tb1_id'); 
$this->db->join('table2name tb2','tb2.id = u.tb2_id'); 
$this->db->order_by('u.id_key','DESC'); 
$result = $this->db->get('User u')->result(); 

Если вы хотите изменить между левым и правым присоединиться просто добавить «влево» или «вправо» к функции соединения.

$this->db->join('table1name pr1','pr1.id = u.tb1_id','right'); 
$this->db->join('table2name tb2','tb2.id = u.tb2_id','right'); 

Это предпочло бы ваш пользовательский стол.

+0

я не понимаю. Представьте, что у меня есть, например, 3 таблицы. Сначала это продукт, второй - активация, а третий - пользователь. Как сделать запрос, где я получу одну строку с объединением всех трех таблиц, но имя пользователя из таблицы пользователей для вызова дважды (иногда это иногда не так)? – Sasa

+0

извините, что я сделал «но имя пользователя» из таблицы пользователей, чтобы дважды позвонить (иногда это то же, что иногда не является). И этот запрос вернется и массив строк со всеми столбцами из таблицы 1, 2 и 3. Если вы хотите, чтобы результат был только последней строкой, вы можете использовать '' -> row() '' вместо '' -> result() ''. –

Смежные вопросы