mySQL没有按预期工作

时间:2016-05-19 19:13:54

标签: mysql select

基本的例子是:

3张表:

订单,只保留我需要与购物车链接的OID;

产品,保留产品名称和我需要的SKU;

购物车,持有OID和产品名称。

这是一个旧系统,但我正在尝试创建一个报告,用户输入SKU以获取与其相关的所有订单:

SELECT * FROM orders o
LEFT JOIN cart c ON (o.id = c.session_id) 
WHERE product_name = 
     (SELECT product_sku FROM products WHERE product_code = c.prorduct_name)
ORDER by sdate DESC;

这不起作用,我试图用子选择添加加入购物车,但这也不起作用。它们没有给我任何结果,或者找到了列的错误。

我是否已经为此提供了足够的信息?还有什么想法我做错了什么?

已更新

 SELECT * FROM orders o 
   LEFT JOIN cart c ON (o.id = c.session_id) 
   LEFT JOIN products p ON (p.product_code = c.product_name) 
 WHERE {$sku} o.senddate BETWEEN '{$_REQUEST["date3"]}' AND
  '{$_REQUEST["date4"]}' ORDER BY o.senddate ASC

我设法使用workbench实现了结果,并且基本上将代码放在不同的顺序中。这似乎可以解决问题:)

1 个答案:

答案 0 :(得分:0)

您的查询中有一个小错字 如果是c.prorduct_name,请写c.product_name。使用INNER JOIN代替LEFT JOIN

此外,如果我正确理解了您的表的架构,您可以像这样重写您的查询。

SELECT * FROM orders AS o,
cart AS c,
products AS p
WHERE c.product_name = p.product_code
AND o.id = c.session_id
AND product_sku = 'the_selected_SKU'
ORDER by sdate DESC;