我有这个MySQL查询,但在我尝试运行它时似乎出错了。因为我是新手,所以我想对我应该做些什么来纠正它。我只想显示包含一个或多个待定产品的订单的名称,数量和订单日期。非常感谢!
select product.name, order_details.quantity, order.date from product,order_details,order
inner join order on order_details.order_id=order.id
inner join product on order_details.product_id=product.id
inner join customer on order.cust_id=costumer.id WHERE order.pending=>1
答案 0 :(得分:2)
您有一个名为订单的表格。这个词在SQL中具有特殊意义。您可以选择重命名表,或者在需要查询时引用它。
最简单的解决方案就是改变。
inner join order ....
到
inner join `order`
请务必在表名周围使用反引号。
答案 1 :(得分:0)
你有一个名为'order'的表,它是SQL中的保留字。
一种解决方案是在表名前加上数据库名称,如Craic Computing blog中所述 另一个是使用`字符包装表名,因为你可以阅读in this StackOverflow question
答案 2 :(得分:0)
您可以尝试以下内容:
SELECT product.name, order_details.quantity, `order`.date
FROM product
INNER JOIN order_details ON product.id = order_detail.product_id
INNER JOIN `order` ON `order`.id = order_detail.order_id
WHERE `order`.pending >= 1
正如其他答案所述,order
是SQL中的保留关键字,用反引号括起来。
也许您应该将pending
信息存储在order_detail
表中(如果未处理则为1,否则为0),以便跟踪哪个产品仍处于待处理状态,而不是递增/递减{ {1}}字段。
在这种情况下,您可以进行以下查询:
order.pending
哪些产品会返回您订单中尚未处理的所有产品,而不是订单中的每件产品,其中可能只有一个产品待定。