2016-08-04 7 views
1

私はMySQLで2つのテーブルを持っています - この例ではtheseと非常に似ています。私がしたいことは、事実上同じことですが、一つの違いがあります。代わりに、このクエリを行う:SQL:WHERE文の後にINNER JOINは機能しませんか?

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate 
FROM Orders 
INNER JOIN Customers 
ON Orders.CustomerID=Customers.CustomerID; 

と全体の田舎者の白人野郎テーブルを選択し、その後、INNER JOINをやって、私はこれをしたい:

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate 
    FROM Orders 
    ------> WHERE OrderDate = '1996-07-05' 
    INNER JOIN Customers 
    ON Orders.CustomerID=Customers.CustomerID; 

ところで、矢印は、あなたが見つける手助けするだけであり違い。

しかし、それは動作しません。それは場合にのみ、私が欲しかっ行わJOIN

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID' at line 5

コードの一部は、私がしたいコンテンツのみを持つテーブルを持つことができるようになる、とINNER:私は次のエラーを取得します。これはどうすればいいですか?

明確にするには:まずはWHERE ...を選択してから、同じクエリで内部結合を行います。

答えて

0

構文規則を構成しないでください。それは動作しません。

すべてのSQLの実装では、WHERE句はすべてクエリのテーブル参照の後になります。

https://mariadb.com/kb/en/sql-99/select-statement/

これは、RDBMSエンジンは、行のフェッチを最適化することを選択した道とは何の関係もありません。 RDBMSはテーブルと行にアクセスする順序を変更し、最適化を試みます。

+0

はい、それが問題でした。私はコードの最後にWHEREを置くとうまくいきます。答えをありがとう。許可されるとすぐに最高の回答を選択します。 –

0

私は解決しています。これを行うことは完全に可能ですが、私が作成したWHERE文は間違った位置にありました。それは次のようになります:

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate 
    FROM Orders 
    INNER JOIN Customers 
    ON Orders.CustomerID=Customers.CustomerID 
------> WHERE OrderDate = '1996-07-05'; 

これは完全に機能します。私自身の質問に答えるのは申し訳ありませんが、他人を助けるかもしれません。