簡體   English   中英

為什么我不能在 codeigniter join 查詢中使用括號

[英]why can't i use parentheses in codeigniter join query

嗨,我正在使用 codeigniter join

$this->db->join

我用了

$this->db->join ( $table2 . " as c","( c.3rdPartyID=a.ShopID OR c.3rdPartyID=a.ParentID OR c.ShopID=a.ShopID OR c.ShopID=a.ParentID )  AND c.3rdPartyID !=0 ", 'left' );

我也試過

$join_query = "( c.3rdPartyID=a.ShopID OR c.3rdPartyID=a.ParentID OR c.ShopID=a.ShopID OR c.ShopID=a.ParentID )  AND c.3rdPartyID !=0 ";

$this->db->join ( $table2 . " as c",$join_query, 'left' );

它給出了一個錯誤。

但沒有括號它工作正常,像這樣

$this->db->join ( $table2 . " as c"," c.3rdPartyID=a.ShopID OR c.3rdPartyID=a.ParentID OR c.ShopID=a.ShopID OR c.ShopID=a.ParentID   AND c.3rdPartyID !=0 ", 'left' );

但在我的情況下,我需要括號,我應該去普通的 mysql 查詢, codeignier 無法做到這一點,請幫助...

這是錯誤

在此處輸入圖片說明

使用false 前任:

$this->db->join ( $table2 . " as c","( c.3rdPartyID=a.ShopID OR c.3rdPartyID=a.ParentID OR c.ShopID=a.ShopID OR c.ShopID=a.ParentID )  AND c.3rdPartyID !=0 ", 'left', false );

任何一個

1) 將您的“AND c.3rdPartyID !=0”移動到單獨的 ->where()

要么

2)編寫您的查詢並使用:

$sql = "Select...";
$this->db->query($sql);

復制自 ellislab 論壇:

使用 Active Record join() 函數將無法進行該查詢。 有一行正則表達式用於查找連接條件的特定結構(通常為 table.something = table.somethingelse)。 在重新創建您提供的連接語句的第一部分時,它將忽略除字母數字和句點 (.) 之外的任何字符。 部分原因是 Active Record 使用了一個名為 _protect_identifiers 的私有函數,它在需要的情況下將任何必要的信息添加到列名 (hostname.database.table.column) 中(請參閱里面的文件“DB_driver.php”數據庫系統文件夾以獲得更好的描述)。 在 table.column 之前添加其他字符會導致這些字符位於列名稱結構的中間,以防需要向其中添加主機或數據庫名稱。

所以基本上,你不能使用 join() 函數。 您可以使用 query() 函數並完全自己寫出來,或者擴展 Active Record 類並重寫 join() 函數以滿足您的需要。

試試這個

    $this->db->from ( $table2 . " as c"," join on ( c.3rdPartyID=a.ShopID OR c.3rdPartyID=a.ParentID OR c.ShopID=a.ShopID OR c.ShopID=a.ParentID )  AND c.3rdPartyID !=0 ");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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