【问题标题】:Joins in codeigniter加入codeigniter
【发布时间】:2014-11-19 12:50:30
【问题描述】:

我有一个包含产品 (dranken) 的 sql 表和一个包含订单 (bestellingen) 的表。

现在我想选择所有产品并获取该产品所有订单的总和。 这段代码可以正常工作:

$this->db->SELECT('dranken.id,dranken.naam,dranken.minimum_prijs,dranken.gewicht, SUM(bestellingen.aantal) AS totaalVerkocht');
$this->db->FROM('dranken');
$this->db->group_by('dranken.id');
$this->db->JOIN('bestellingen', 'bestellingen.drank_id = dranken.id',"left");

但我只想获取某个日期之前的订单总和。

$this->db->WHERE('bestellingen.date <=',$whereDate);

这几乎可以工作。它不会给我没有订单的产品。所以我添加了这个 WHERE 子句。

$this->db->OR_WHERE('bestellingen.date',NULL);

但是现在我有一个问题。当产品订单的日期在 where 子句之后时,它会从结果中消失。或多或少合乎逻辑,因为它与 WHERE 语句不匹配。

但我不希望它们消失。如果没有与此匹配的订单,我想要 NULL。

我认为 LEFT JOIN 总是给出表 1 的所有记录?

我该如何解决这个问题?

这是生成的查询:

SELECT 
    dranken.id, dranken.naam, dranken.minimum_prijs, dranken.gewicht, SUM(bestellingen.aantal) AS totaalVerkocht 
FROM (dranken) 
LEFT JOIN bestellingen ON bestellingen.drank_id = dranken.id 
WHERE 
    bestellingen.date <= '2014-11-19 14:00:00' 
OR  bestellingen.date IS NULL 
GROUP BY dranken.id

【问题讨论】:

  • 你能把实际的查询也放在帖子里吗?您可以在通话后立即使用die($this-&gt;db-&gt;last_query());。干杯
  • SELECT dranken.id, dranken.naam, dranken.minimum_prijs, dranken.gewicht, SUM(bestellingen.alROM) AS to (dranken) 左连接 bestellingen ON bestellingen.drank_id = dranken.id WHERE bestellingen.date date IS NULL GROUP BY dranken.id

标签: php mysql codeigniter


【解决方案1】:

我不能确定这会奏效,所以很明显,如果没有,请告诉我。

去掉WHERE子句,把join语句改成:

$this->db->JOIN('bestellingen', "bestellingen.drank_id = dranken.id AND bestellingen.date <= '$whereDate'","left");

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    像这样在 JOIN 中使用内联视图(确保在需要的地方使用 s 别名 - 所以“s”替换了 bestellingen):

    $this->db->JOIN(' ( select * from bestellingen where bestellingen.date <= ' . $whereDate . ' ) s ' [...]);
    

    【讨论】:

    • 我对 Codeigniter 有点生疏,您可能想检查如何在子查询中正确使用 $whereDate(如何将值附加到字符串;这是以防万一您得到错误)。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 2013-03-11
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多