Multiple Joins in Codeigniter

前端 未结 4 1933
孤独总比滥情好
孤独总比滥情好 2020-12-08 23:33

I\'m new to building databases and I\'m trying to do a JOIN based on a having three database tables.

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


        
相关标签:
4条回答
  • 2020-12-09 00:07
    $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();
    

    The join function works like this: join('TableName', 'ON condition', 'Type of join');

    The equivilent 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
    

    I found that writing the SQL first, testing it, then converting to the active record style minimizes error.

    0 讨论(0)
  • 2020-12-09 00:13

    if you want a flexible query you could use:

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

    which utilizes the following syntax $query = $this->db->query('SELECT * FROM my_table');

    here is the query:

    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
    

    you may want to read more about joins here

    then go through your results in such a way:

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

    foreach ($query->result_array() as $row)
    {
       echo $row['namea'];
       echo $row['nameb'];
    }
    
    0 讨论(0)
  • 2020-12-09 00:14
    $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
    
    0 讨论(0)
  • 2020-12-09 00:17
    $this->db->select('*');
    $this->db->from('blogs');
    $this->db->join('comments', 'comments.id = blogs.id');
    $this->db->join('authors', 'authors.id = comments.author_id');
    

    hopefully you get my example.

    Just add another $this->db->join();

    For complex queries you might be better off looking at an ORM such as doctrine

    0 讨论(0)
提交回复
热议问题