[英]Codeigniter/PHP Outer JOIN Syntax on Multiple Tables
我試圖基於每個表中的“ site_id”列執行外部JOIN 3表。 我正在使用Codeigniter /活動記錄。
用戶通過表單輸入站點編號,一旦提交站點編號,它應該調用執行以下內容的模型:
$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服務器版本相對應的手冊以獲取正確的語法,以在'OUTER JOIN leader
ON sites
附近使用。 site_id
= leader
。 第3行上的site_id
OUTE'
選擇* 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
= site_id
'
文件名:/home2/cdowney/public_html/mclinbase.com/models/viewsite_model.php
行號:33“
我相信(希望)這只是我遺漏的一個小語法錯誤或對外部聯接的濫用,但是我無法弄清楚。
有指導嗎?
嘗試這個 -
$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();
只需聯合選擇左右聯接即可獲得與外部聯接相同的結果:
SELECT * FROM table1
LEFT JOIN table2 ON table1.id = table2.id
UNION
SELECT * FROM table1
RIGHT JOIN table2 ON table1.id = table2.id
也許這會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.