53

これが私のコードです:

 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'

table1430 に関連付けられているすべての ID とf_com_id送信済みのステータスからの情報が必要です。タイプは、他のテーブルに保存されている処理中のみである必要があります( table2)

f_idp_keyありf_key、両方の表にあります。
しかし、これによりエラーが発生します。句を間違って配置していると思いますWHERE。修正方法は?

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

4

4 に答える 4

83

はい、あなたは正しいです。WHERE句を間違って配置しました。WHERE1 つのクエリで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' 
于 2012-09-11T07:16:59.053 に答える
12


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

これを試して:

table1 から table1.f_id を選択
  INNER JOIN table2
     オン (table2.f_id = table1.f_id AND table2.f_type = 'InProcess')
   WHERE table1.f_com_id = '430' AND table1.f_status = '送信済み'
于 2012-09-11T07:21:30.803 に答える
0

2 つの句を使用していますが、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'
于 2012-09-11T07:22:12.010 に答える
0

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'
于 2012-09-11T07:17:53.470 に答える