2013-01-09 102 views
0

我有这个MySQL查询,但它似乎在我尝试运行它时出现错误。由于我是新手,我希望得到一些关于我应该怎样改正的建议。我只想显示具有一个或多个待定产品的订单的名称,数量和订单日期。非常感谢!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

你正在得到哪个错误.. ?? –

+0

如果待处理的信息位于订单表中,您如何知道哪些产品仍在等待处理? –

+0

你是对的,我没有得到任何结果。 – Js30

回答

2

您有一个名为为了表。这个词在SQL中有特殊意义。您的选项是重命名表格,或者在需要查询时引用它。

最简单的解决方案是改变。

inner join order .... 

inner join `order` 

一定要使用周围的表名反引号。

+0

非常感谢! – Js30

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中的保留关键字,用反引号括起来。

也许你应该(如果待定,0如果不是1),以跟踪哪些产品仍有待递增/递减order.pending场,而不是存储在order_detailpending信息。

在这种情况下,你可以做以下查询:

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_detail`.pending = 1 

这将返回所有的产品仍有待您的订单,而不是每一个产品从其中也许只有一个挂单。

+0

非常感谢! – Js30

+0

您对上述评论正确。我得不到结果..我应该怎么做,有什么建议?我是一个总新手。 – Js30

+0

我编辑了我的答案,试图回答你的问题。希望这可以帮助。 –