Published on

August 7, 2014

Comprendre la clause IN dans SQL Server

La clause IN dans SQL Server nous permet de spécifier plusieurs valeurs dans une clause WHERE. Cela peut être utile lorsque nous voulons filtrer des données en fonction d’un ensemble de valeurs prédéfinies ou lorsque nous devons récupérer des données à partir d’une sous-requête.

Prenons un exemple en utilisant les tables suivantes:

CREATE TABLE [dbo].[Employee](
    [Empid] [Int] IDENTITY (1, 1) NOT NULL Primary key,
    [EmpNumber] [nvarchar](50) NOT NULL,
    [EmpFirstName] [nvarchar](150) NOT NULL,
    [EmpLastName] [nvarchar](150) NULL,
    [EmpEmail] [nvarchar](150) NULL,
    [Salary] [int] NULL
)

CREATE TABLE [dbo].[EmpProjects](
    [EmpProjectId] [int] IDENTITY (1, 1) NOT NULL Primary key,
    [EmpNumber] [nvarchar](50) NOT NULL,
    [ProjectCode] [nvarchar](50) NOT NULL
)

Supposons que nous voulions récupérer les enregistrements des employés associés aux projets ayant les codes de projet “Proj002” ou “Proj005”. Nous pouvons y parvenir en utilisant la requête suivante:

SELECT * 
FROM Employee 
WHERE EmpNumber IN (
    SELECT EmpNumber 
    FROM EmpProjects 
    WHERE ProjectCode = 'Proj002' OR ProjectCode = 'Proj005'
)

Dans la requête ci-dessus, nous utilisons une sous-requête pour récupérer les valeurs multiples dans la clause IN. La sous-requête sélectionne les numéros d’employés dans la table EmpProjects où le code de projet est soit “Proj002” ou “Proj005”. La requête principale récupère ensuite les enregistrements de la table Employee où le numéro d’employé est dans le résultat de la sous-requête.

Maintenant, considérons un autre scénario où nous voulons récupérer les enregistrements des employés qui ont travaillé sur le premier projet avec le code ‘Proj001′. Nous pouvons également utiliser une sous-requête pour cela, mais supposons que ce projet a été terminé il y a des années et que seuls trois employés avec les numéros d’employés “A001”, “A002” et “A003” y ont travaillé. Dans ce cas, nous pouvons passer ces numéros d’employés en tant que valeurs prédéfinies dans la clause IN, comme indiqué dans la requête suivante:

SELECT * 
FROM Employee 
WHERE EmpNumber IN ('A001', 'A002', 'A003')

Cette requête récupère les enregistrements de la table Employee où le numéro d’employé est soit “A001”, “A002” ou “A003”.

La clause IN est un outil puissant dans SQL Server qui nous permet de filtrer des données en fonction de plusieurs valeurs. Que nous utilisions une sous-requête ou des valeurs prédéfinies, la clause IN offre une flexibilité dans l’interrogation et la récupération des résultats souhaités.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.