2017-04-05 14 views
1

のJOIN:受注のMySQLのINNERは、私は2つのテーブル持って使用

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

を、orderIdorderNameなどの属性があります。
orderTakenには、userId,orderIdおよびorderStatusのような属性があります。

基本的には、私のプロジェクトのメカニズムは次のように実行されていますユニークなuserIdを持つユーザーは、各順序は、同様orderId独自のを持っているWebページから注文を取ることができるようになります
。撮影後、orderTakenテーブルにuserId、orderIdが記録され、最初にorderStatus = 1に設定されます。 ここで、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 –

+1

とは何の関係もないとしてPHPタグを削除してください私は、クエリを実行するために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!しかし、私はあなたのクエリを実行した後、私は言った:ドキュメント #1052 - IN/ALL/ANYサブクエリの列 'orderId'はあいまいです – Hang

関連する問題