2016-01-04 2 views
1

У меня есть три таблицы в базе данных.Получение данных из трех таблиц codeigniter с помощью Query builder

1.george_holiday_users (идентификатор, package_id, имя, адрес электронной почты)

2.george_holiday_passengers (идентификатор, user_id, тип, имя, возраст, пол)

3.george_packages (идентификатор, package_name, описание)

Теперь я хочу, чтобы выбрать данные из трех таблиц george_holiday_users, george_packages и george_holiday_passengers таблицы, где george_holiday_users.id = george_holiday_passengers.user_id и george_holiday_users.package_id = george_packages.id

$this->db->select('*'); 
      $this->db->from('george_holiday_users'); 
      $this->db->join('george_holiday_passengers', 'george_holiday_users.id = george_holiday_passengers.user_id'); 
      $this->db->join('george_packages', 'george_packages.id = george_holiday_users.package_id'); 
      $query = $this->db->get(); 
return $query->result(); 

Но я буду получать данные только из таблицы george_holiday_users.

+0

Какие результаты вы получаете, и уверены ли вы, что должны получать результат, который, как вы ожидаете? Вы вызываете '$ query-> result()' для получения набора результатов? –

+0

Да, я звоню –

ответ

0

Попробуйте

$query = $this->db->select("SELECT * 
       FROM george_holiday_users 
       INNER JOIN george_holiday_passenger ON george_holiday_users.id = george_holiday_passengers.user_id 
       INNER JOIN george_packages ON george_holiday_users.package_id = george_packages.id"); 
$result = $query->result_array(); 
return $result; 
+0

Позвольте мне ответить на ваш вопрос –

+0

Получил ошибку в sql-синтаксисе –

+0

wts that ?? может показать ошибку, пожалуйста, –

1

Мое мнение таково, что вы можете удалить george_holiday_passengers и добавьте type,age,gender колонки к george_holiday_users, как смотрит на него; его только расширенные данные таблицы holiday_users и построить запрос с вашими новыми таблицами базы данных.

$query = $this->db->select('u.*, p.package_name, p.description') 
     ->from('george_holiday_users u') 
     ->join('george_packges p', 'u.package_id = p.id', 'left') 
     ->get(); 

return $query->result(); 

В любом случае, вы можете достичь результата, используя этот запрос.

$query = $this->db->select('u.*, hp.type, hp.name AS passengers_name, hp.age, hp.gender, p.package_name, p.description') 
     ->from('george_holiday_users u') 
     ->join('george_holiday_passengers hp', 'hp.user_id = u.id', 'left') 
     ->join('george_packges p', 'u.package_id = p.id', 'left') 
     ->get(); 

return $query->result(); 

вы должны быть осторожны с именами столбцов, потому что в вашей базе данных есть много столбцов с одинаковыми именами, это может повлиять на ваш запрос, если вы используете соединения, и т.д.

Надежда, что помогает.

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