我正在尝试基于" 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 sites
。site_id
= leader
。site_id
外部加入{{1} } ON state
。sites
= site_id
。state
WHERE site_id
=' 63'
文件名:/home2/cdowney/public_html/mclinbase.com/models/viewsite_model.php
行号:33"
我相信(希望)这只是一个我错过的小语法错误或外部联接的滥用,但我无法弄明白。
任何指导?
答案 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
也许这会有所帮助。