Clause WHERE IN

Résolu/Fermé
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 - 3 déc. 2017 à 19:58
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 - 3 déc. 2017 à 21:33
Bonjour,
J'aimerai comprendre la clause IN de SQL.
En fait WHERE IN est un raccourci pour plusieurs conditions OR.
Alors pourquoi si je met "WHERE fonction IN ('Professeur')" ça fonctionne alors qu'il y a qu'une seule condition et si je fait "WHERE fonction = 'Professeur'" j'ai exactement le même résultat.
Pouvez-vous m'expliquer s'ils vous plait, j'ai lu pas mal de sujet mais j'ai pas trop saisie.
Je vous remercie


6 réponses

LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
3 déc. 2017 à 20:48
oui mais alors pourquoi ca ma renvoie aussi les lignes avec IN
SELECT * FROM listeEtudiants WHERE nom_etudiant IN ('Dupont');
0
Utilisateur anonyme
Modifié le 3 déc. 2017 à 21:07
Comment ça ? Je ne comprends pas ce que tu veux dire.

En fait, (dans mon exemple) la clause IN renvoie TOUTES les lignes contenant 'Dupont' et 'Durand' pour nom_etudiant, c'est comme si tu faisais :

SELECT * FROM listeEtudiants WHERE nom_etudiant='Dupont' OR nom_etudiant='Durand';
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
3 déc. 2017 à 20:56
oui mais là dans mon exemple il y a simplement 1 clause WHERE avec IN alors que c'est simplement un égal en fait..
excuse moi j'essaie juste de mettre un peu d'ordre dans ma tête...
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
3 déc. 2017 à 20:58
comme ça
SELECT * FROM listeEtudiants WHERE nom_etudiant IN ('Dupont');
0
Utilisateur anonyme
3 déc. 2017 à 20:59
D'accord bein pour faire simple, dans ton cas, il faut juste que tu te dises que ça
SELECT * FROM listeEtudiants WHERE nom_etudiant IN ('Dupont');

est égal à ça
SELECT * FROM listeEtudiants WHERE nom_etudiant='Dupont';
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
3 déc. 2017 à 21:05
D'accord merci je ne comprenais pourquoi la clause WHERE IN est le même chose que WHERE =
Alors que sur un site j'ai vu ça WHERE IN est un raccourci pour plusieurs conditions OR
C'est ce qui m'a perturbé.
Je te remercie
0
Utilisateur anonyme
3 déc. 2017 à 21:09
Oui, c'est exactement ça, WHERE IN est bel et bien un raccourci pour plusieurs conditions OR car :

SELECT * FROM listeEtudiants WHERE nom_etudiant='Dupont' OR nom_etudiant='Durand';

est égal à
SELECT * FROM listeEtudiants WHERE nom_etudiant IN ('Dupont','Durand');
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
3 déc. 2017 à 21:33
Merci
0
Utilisateur anonyme
3 déc. 2017 à 20:26
Exemples :
SELECT * FROM listeEtudiants WHERE nom_etudiant='Dupont';

Va te renvoyer toutes les lignes où le nom 'Dupont' est inclus.


SELECT * FROM listeEtudiants WHERE nom_etudiant IN ('Dupont','Durand');

Va te renvoyer toutes les lignes où 'Dupont' ET 'Durand' sont inclus.
-1