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

时间:2014-04-24 15:00:34

标签: php mysql codeigniter join outer-join

我正在尝试基于" site_id"执行外部JOIN 3表。每个表中的列。我正在使用Codeigniter / Active Record。

用户通过表单输入站点编号,一旦提交了号码,就应该调用执行以下内容的模型:

$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();

但是我收到以下错误消息:

"错误号码:1064

您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在leader sites附近site_id附近使用正确的语法。leader = site_id。{{1 OUTE'在第3行

SELECT * FROM(sites)OUTER JOIN leader ON sitessite_id = leadersite_id外部加入{{1} } ON statesites = site_idstate WHERE site_id =' 63'

文件名:/home2/cdowney/public_html/mclinbase.com/models/viewsite_model.php

行号:33"

我相信(希望)这只是一个我错过的小语法错误或外部联接的滥用,但我无法弄明白。

任何指导?

2 个答案:

答案 0 :(得分:1)

试试这个 -

$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 :(得分:0)

简单地联合选择左连接和右连接以获得与外连接相同的结果:

SELECT * FROM table1
LEFT JOIN table2 ON table1.id = table2.id
UNION
SELECT * FROM table1
RIGHT JOIN table2 ON table1.id = table2.id

也许这会有所帮助。