繁体   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