簡體   English   中英

多表上的Codeigniter / PHP外連接語法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM