MySQL查询多个表内连接

时间:2013-01-09 11:11:03

标签: mysql sql

我有这个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

3 个答案:

答案 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

哪些产品会返回您订单中尚未处理的所有产品,而不是订单中的每件产品,其中可能只有一个产品待定。