基本的例子是:
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实现了结果,并且基本上将代码放在不同的顺序中。这似乎可以解决问题:)
答案 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;