我有一个非常基本的声明,我正在尝试运行但遇到了问题。
$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
的字段?
最佳答案
一个简单的解决方法是使用
"r.RewardID = cor.RewardID"
代替
"r.RewardID" => "cor.RewardID"
这样,cor.RewardID
不应被视为字符串文字,而应被视为实际列。
旁注,当 r.RewardID = cor.RewardID
时,您已经加入了行,所以我想说额外的条件是多余的(有问题的条件),因此不需要.
关于PHP CodeIgniter WHERE 子句语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48123098/