web-dev-qa-db-fra.com

MySql Inner Join avec la clause WHERE

Voici mon code:

 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'

J'ai besoin d'informations de table1 Comme identifiant associé à f_com_id Comme 430 et de l'état tel que soumis et le type doit être en cours de traitement et stocké dans une autre table (table2)

f_id Est p_key Et f_key Dans les deux tables.
Mais cela me donne des erreurs, je pense que je mets la clause WHERE mal, comment la réparer.?

Error msg: # 1064 - Vous avez une erreur dans votre syntaxe SQL; Consultez le manuel correspondant à la version de votre serveur MySQL pour connaître la syntaxe à utiliser près de 'INNER JOIN table2 ON table2.f_id =' à la ligne 2.

29
Aditya Kumar

Oui, tu as raison. Vous avez mal placé la clause WHERE. Vous ne pouvez utiliser qu'une seule clause WHERE dans une requête unique, essayez donc AND pour plusieurs conditions, comme ceci:

 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. Modifiez INNER JOIN avant la clause WHERE.
2. Vous avez deux WHERE qui ne sont pas autorisés.

Essaye ça:

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

Vous ne pouvez écrire qu'une seule clause where.

 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