2013-01-09 166 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

我編輯了我的答案,試圖回答你的問題。希望這可以幫助。 –