douyanqu9722 2014-04-24 15:00
浏览 74
已采纳

多个表上的Codeigniter / PHP外连接语法

I am trying to perform an outer JOIN 3 tables based on the "site_id" column in each table. I'm using Codeigniter/Active Record.

The user enters a site number via a form and once the number is submitted it should call the model that executes something like this:

$site_id = $this->input->post('site_id');

$this
->db
->select('*')
->where('site_id', $site_id)
->from('sites')
->join('leader', 'sites.site_id = leader.site_id', 'outer')
->join('state', 'sites.site_id = state.site_id', 'outer');

$q = $this->db->get();

However I get the following error message:

"Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OUTER JOIN leader ON sites.site_id = leader.site_id OUTE' at line 3

SELECT * FROM (sites) OUTER JOIN leader ON sites.site_id = leader.site_id OUTER JOIN state ON sites.site_id = state.site_id WHERE site_id = '63'

Filename: /home2/cdowney/public_html/mclinbase.com/models/viewsite_model.php

Line Number: 33"

I believe(hope) this is just a small syntax error that I'm missing or a misuse of the outer join but I have not been able to figure it out.

Any guidance?

  • 写回答

2条回答 默认 最新

  • doubu1950 2014-04-24 15:24
    关注

    Try this -

    $this->db->select('*');
    $this->db->where('sites.site_id', $site_id);
    $this->db->from('sites');
    $this->db->join('leader', 'sites.site_id = leader.site_id', 'outer');
    $this->db->join('state', 'sites.site_id = state.site_id', 'outer')
    
    $q = $this->db->get();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?