Несколько соединений в Codeigniter

Я новичок в создании баз данных, и я пытаюсь сделать JOIN на основе трех таблиц базы данных.

Table A = ID, Name, etc Table B = ID, Name, etc Table C = ID, TableAId, TableBId 

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

 $this->db->select('*'); $this->db->from('TableA AS A');// I use aliasing make joins easier $this->db->join('TableC AS C', 'A.ID = C.TableAId', 'INNER'); $this->db->join('TableB AS B', 'B.ID = C.TableBId', 'INNER'); $result = $this->db->get(); 

Функция join работает следующим образом: join ('TableName', 'ON condition', 'Тип соединения');

Эквивалентный sql:

 SELECT * FROM TableA AS A INNER JOIN TableC AS C ON C.TableAId = A.ID INNER JOIN TableB AS B ON B.ID = C.ID 

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

 $this->db->select('*'); $this->db->from('blogs'); $this->db->join('comments', 'comments.id = blogs.id'); $this->db->join('authors', 'authors.id = comments.author_id'); 

надеюсь, вы получите мой пример.

Просто добавьте еще $this->db->join() ;

Для сложных запросов вам может быть лучше смотреть на ORM, например, на доктрину

если вы хотите использовать гибкий запрос, который вы можете использовать:

http://codeigniter.com/user_guide/database/results.html

который использует следующий синтаксис $query = $this->db->query('SELECT * FROM my_table');

вот запрос:

 SELECT a.name as namea ,b.name as nameb FROM tablec c JOIN tablea a ON a.ID = c.ID JOIN tableb b ON b.ID = c.ID 

вы можете больше узнать о присоединениях здесь

затем выполните свои результаты таким образом:

$query = $this->db->query("YOUR QUERY");

 foreach ($query->result_array() as $row) { echo $row['namea']; echo $row['nameb']; } 
 $this->db->select('*'); $this->db->from('table1'); $this->db->join('table2','table1.id=table2.id'); $this->db->join('table3','table2.id=table3.id'); $this->db->join('table4','table3.id=table4.id'); $this->db->join('table5','table5.id=table4.id'); $this->db->where('table5.id',$this->session->userdata('id'));//getting value from session and match the id of table5 and then show data $data=$this->db->get()->result();//all data store in $data variable