2017-04-05 109 views
1

我有兩個表:MySQL的INNER JOIN使用

+-----------------------+ 
| Tables_in_my_database | 
+-----------------------+ 
| orders    | 
| orderTaken   | 
+-----------------------+ 

訂單,有喜歡orderIdorderName屬性。
爲了方便,有userId,orderIdorderStatus等屬性。

基本上,我的項目的機制運行,如:
具有唯一的用戶ID的用戶將能夠從網頁,其中每個訂單都有其獨特的orderId以及採取訂單。採取後,orderTaken表將記錄userId,orderId和最初設置orderStatus = 1

現在,我想選擇一個用戶所採取的訂單,其中orderStatus = 1,但我也需要從我的訂單表中顯示orderName。我已經學會了內部連接並寫下了這樣一個查詢:

SELECT * FROM orders 
WHERE orders.orderId IN 
(SELECT orderId FROM orderTaken 
WHERE orderTaken.userId = '8' AND orderTaken.orderStatus = '1') 
INNER JOIN orderTaken ON orders.orderId = orderTaken.orderId 

但是,MySQL一直在抱怨語法錯誤。我想我不能使用內部連接這種方式?任何人都可以糾正我嗎?謝謝!

+0

請刪除php的標籤,因爲這無關用PHP –

+1

哦,是的,對不起,因爲我使用PHP來執行查詢,它在默認情況下,所以我只是把它留在那裏。我已將其刪除。 – Hang

回答

6
SELECT * FROM orders 
INNER JOIN orderTaken ON orders.orderId = orderTaken.orderId 
WHERE orderTaken.userId = '8' AND orderTaken.orderStatus = '1' 

你有過於複雜了。這將工作。

我已經將userId的引號留下,因爲我認爲是正確的,但是如果它們的數據類型爲INT那麼您應該刪除它們。

如果你想在JOIN小號一些閱讀,然後看到這些鏈接

0

嘗試這樣

SELECT * 
    FROM (orders INNER JOIN ordersTaken ON orders.orderId = orderTaken.orderId) 
    WHERE orderId IN 
    (SELECT orderId 
    FROM orderTaken 
    WHERE orderTaken.userId = '8' AND orderTaken.orderStatus = '1') 
+0

感謝ImmersionULTD!但是在我運行你的查詢後,我得到MySQL說:文檔 #1052 - IN/ALL/ANY子查詢中的列'orderId'是不明確的 – Hang