【问题标题】:How to correct Conditional WHERE and JOIN sql table request?如何更正条件 WHERE 和 JOIN sql 表请求?
【发布时间】:2019-04-08 16:40:45
【问题描述】:

我正在尝试从取决于其他两个表的条​​件的表中选择特定信息。

当我尝试单独的条件时工作,但当我尝试使用条件时不起作用。

我从表中得到正确的数据:

$sql = "SELECT * FROM commerce_order WHERE m_key = 'total'"; 

我也从表中得到结果:

$sql = "SELECT * 
        FROM  commerce_order M 
        JOIN commerce_order_items I 
          ON M.item_id = I.item_id 
        JOIN produtcs P 
          ON I.order_id = P.ID 
        WHERE status = 'complete'";

但是当我尝试这个时,我没有得到任何结果:

$sql = "SELECT * 
        FROM commerce_order M 
        WHERE m_key = 'total' 
        JOIN commerce_order_items I 
          ON M.item_id = I.item_id 
        JOIN produtcs P 
          ON I.order_id = P.ID 
        WHERE status = 'complete'";`

我希望第一个代码结果被第二个代码条件过滤。我现在应该返回第一个表中的值,但我没有得到任何值。

【问题讨论】:

  • 你不能把WHERE m_key = 'total'放在JOIN之前你所有的WHEREs应该放在你所有的JOINs之后

标签: php mysql datatable conditional


【解决方案1】:

你不能把 WHERE m_key = 'total' 放在 JOIN 之前,你所有的 WHERE 子句应该放在你所有的 JOINs 之后:

$sql = "SELECT * 
    FROM commerce_order M  
    JOIN commerce_order_items I 
      ON M.item_id = I.item_id 
    JOIN produtcs P 
      ON I.order_id = P.ID 
    WHERE status = 'complete' AND m_key = 'total'";

【讨论】:

  • 问题是,如果我这样做,我会考虑 m_key 在 products 表中作为状态,但 m_key 在第一个表中,这是我想要从中获取值的表。
猜你喜欢
  • 1970-01-01
  • 2015-05-01
  • 1970-01-01
  • 2011-05-30
  • 2023-03-29
  • 2010-12-31
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多