【问题标题】:PHP CodeIgniter WHERE clause statementPHP CodeIgniter WHERE 子句语句
【发布时间】:2018-06-15 19:50:08
【问题描述】:

我有一个非常基本的声明,我正在尝试运行但我遇到了问题。

$item = $this->db
            ->select("r.CustomerIDs, r.DateAdded")
            ->join("customer_orders_rewards as cor", "r.RewardID = cor.RewardID")
            ->join("customer_orders as co", "co.OrderID = cor.OrderID")
            ->where(array("r.Denomination" => $row['Denomination'], "r.RewardID" => "cor.RewardID"))
            ->get("customer_rewards as r");

在上面的语句中,它将cor.RewardID 解释为一个字符串,我希望它是来自join 的一个字段。

导致查询如下所示:

SELECT `r`.`CustomerID`, `r`.`DateAdded` 
FROM `customer_rewards` as `r` 

JOIN `customer_orders_rewards` as `cor` 
ON `r`.`RewardID` = `cor`.`RewardID` 

JOIN `customer_orders` as `co` 
ON `co`.`OrderID` = `cor`.`OrderID` 

WHERE `r`.`Denomination` = '35' 
AND `r`.`RewardID` = 'cor.RewardID'  <---- Issue

如何在WHERE 子句中引用join 中的字段?

【问题讨论】:

  • 我正在重新检查您的查询以寻找更改(也许这种情况应该在 join 中),但事实证明它已经是 - 所以这个条件对我来说似乎是多余的。您已经在该条件下加入行。你真的需要where吗?
  • @FirstOne 拍得好,毕竟这个问题可能没有必要。我把那条线拿出来,它似乎仍然有效。谢谢你让我直截了当:)

标签: php mysql codeigniter


【解决方案1】:

一个简单的解决方法是使用

"r.RewardID = cor.RewardID"

而不是

"r.RewardID" => "cor.RewardID"

这样,cor.RewardID 不应被视为字符串文字,而应被视为实际列。


顺便说一句,当r.RewardID = cor.RewardID 时,您已经加入了行,所以我想说额外的条件是多余的(有问题的),因此不需要它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-23
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 2010-12-07
    • 2013-03-02
    相关资源
    最近更新 更多