web-dev-qa-db-ja.com

WHERE句を使用したMySql内部結合

ここに私のコードがあります:

 SELECT table1.f_id  FROM table1 WHERE table1.f_com_id = '430' AND      
 table1.f_status = 'Submitted' 
 INNER JOIN table2
 ON table2.f_id = table1.f_id
 where table2.f_type = 'InProcess'

table1に関連付けられているすべてのIDが430であり、ステータスが送信済みであり、タイプは他のテーブルに格納されている処理中のみである必要があるため、f_com_idからの情報が必要です(table2

f_idは、両方のテーブルでp_keyおよびf_keyです。
しかし、これによりエラーが発生します。WHERE句を間違っていると思います。どうすれば修正できますか?

エラーメッセージ:#1064-SQL構文にエラーがあります。 2行目で 'INNER JOIN table2 ON table2.f_id ='の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

29
Aditya Kumar

はい、あなたは正しいです。 WHERE句が間違っています。 1つのクエリで使用できるWHERE句は1つだけなので、次のような複数の条件に対してANDを試してください。

 SELECT table1.f_id  FROM table1 
   INNER JOIN table2
     ON table2.f_id = table1.f_id
 WHERE table2.f_type = 'InProcess'
   AND f_com_id = '430'
   AND f_status = 'Submitted' 
48
hims056


1。 WHERE句の前にINNER JOINを変更します。
2。許可されていないWHEREが2つあります。

これを試して:

 SELECT table1.f_id FROM table1 
 INNER JOIN table2 
 ON(table2.f_id = table1.f_id AND table2.f_type = 'InProcess')
 WHERE table1。 f_com_id = '430' AND table1.f_status = 'Submitted' 
8
Mistdemon

Where句は1つしか記述できません。

 SELECT table1.f_id  FROM table1
 INNER JOIN table2
 ON table2.f_id = table1.f_id
 where table1.f_com_id = '430' AND      
 table1.f_status = 'Submitted' AND table2.f_type = 'InProcess'
1
xdazz