![]() |
Conjonctions Logiques et Disjunctions |
Pour une société immobilière, supposons que vous avez un client qui envisage d'acheter une seule maison familiale autour de Silver Spring, Maryland, vous vérifierez la liste des propriétés et découvrirez ce que vous avez. Pour répondre à cette demande, vous devez examiner deux conditions pour chaque propriété :
Lorsque vous préparez votre annonce avant de voir le client, vous pouvez commencer par créer une requête qui répertorie les seules maisons familiales. Voici un exemple :
L'autre condition nécessite que la maison soit située dans Silver Spring. Vous pouvez la définir comme suit :
De ces deux résultats, notez qu'il n'existe aucune relation entre le fait qu'une propriété est une seule famille et qu'elle est située à Silver Spring. Mais notre client acheterait la propriété uniquement si LES DEUX conditions sont remplies : la propriété est une seule famille et la propriété se trouve dans Silver Spring. Ce type de condition est dénommée conjonction logique. Pour créer une conjonction logique dans SQL, utilisez l'opérateur AND. Pour écrire l'instruction, vous utilisez la formule suivante : SELECT WhatColumn(s) FROM WhatObject WHERE Condition1 AND Condition2 Les facteurs WhatColumn(s) et WhatObject sont les mêmes facteurs que nous avons utilisés jusqu'à présent. Le mot-clé AND est l'opérateur qui rejoint les conditions. Chaque condition est écrite comme une opération de SQL à l'aide de la formule : Column operator Value Dans ce cas, l'opérateur WHERE ressemble à l'instruction conditionnelle IF. La Condition1 est la première qui serait examinée. Si la première condition est False, l'instruction entière est fausse et il n'y a aucune raison d'examiner la deuxième condition. Si la première condition est True, puis la deuxième condition serait examinée. Sur cette base, supposons que nous voulons obtenir une liste des étudiantes qui vivent dans le Maryland. L'instruction SQL utilisée pour obtenir cette liste peut être écrite comme suit : SELECT FirstName, LastName, Gender, City, State FROM Students WHERE Gender = N'female' AND State = N'md' ; Nous avons déclaré que chaque condition a été évaluée séparément. Pour cette raison, pour faciliter la lecture de l'instruction de conjonction, chaque condition devrait être incluse entre parenthèses. Par conséquent, la déclaration de SQL ci-dessus peut être écrite comme suit : SELECT FirstName, LastName, Gender, City, State FROM Students WHERE (Gender = N'female') AND (State = N'md ') Cela donnerait :
Vous pouvez également inverser une condition en la précèdant avec l'opérateur NOT.
Supposons qu'un client envisage d'acheter une simple maison de famille ou une maison de ville. Pour préparer la liste ou les propriétés, vous devez créer une requête qui ne considère que ces deux options. Avant de construire la requête, vous pouvez indiquer la chose suivante :
Lors de la création de la liste, vous pouvez inclure une propriété uniquement s'il s'agit d'une seule famille ou d'une maison :
Ce type de déclaration est dénommée disjonction logique. La disjonction logique est exprimée en SQL à l'aide de l'opérateur OR.
Si vous avez une plage de valeurs logique et vous voulez savoir si une certaine valeur est contenue dans cette plage, vous pouvez ajouter un opérateur BETWEEN à une instruction WHERE. L'opérateur BETWEEN est combiné avec AND pour obtenir une liste des enregistrements entre deux valeurs. La formule de base de cet opérateur est : WHERE Expression BETWEEN Start AND End L'Expression placeholder correspond généralement au nom de la colonne dont vous voulez examiner les valeurs. Le facteur démarrage est la valeur de départ de la plage à envisager. La fin du facteur est la valeur la plus élevée à prendre en considération dans la plage. Une fois que cette condition est exécutée, elle génère la liste des valeurs entre le Start et End. Pour créer une expression BETWEEN dans la table de fenêtre, sélectionnez les colonnes souhaitées. Sous la colonne de Filtre qui correspond au champ sur lequel vous souhaitez définir la condition, saisissez l'expression BETWEEN. Voici un exemple qui génère une liste d'étudiants qui vivent dans le sud du Maryland où le ZIP Code est de 20500 à 21000 (exclu) : SELECT FirstName, LastName, Gender, City, State, ZIPCode, SPHome FROM Students WHERE ZIPCode BETWEEN N'20500' AND N'21000' Il est généralement une habitude d'inclure l'ensemble de l'instruction BETWEEN entre parenthèses. L'instruction ci-dessus devrait produire :
Si vous avez une série d'enregistrements et que vous souhaitez trouver un enregistrement ou un groupe d'enregistrements parmi eux, vous pouvez utiliser l'exploitant IN en l'ajoutant à une instruction WHERE. L'opérateur IN est un type de différents opérateurs OR. Il s'ensuit cette formule : IN(Expression1, Expression2, Expression_n) Chaque facteur d'expression peut être l'une des valeurs d'une colonne. C'est l'équivalent de Expression1OR Expression2 OR Expression_n, etc. Pour créer une expression IN dans la table de fenêtre, sélectionnez les colonnes souhaitées. Sous la colonne Filtre qui correspond au champ sur lequel vous souhaitez définir la condition, tapez l'expression IN. À partir de notre liste des étudiants, imaginez que vous souhaitez obtenir une liste des étudiants qui vivent en Silver Spring, en Rockville ou en Chevy Chase. Vous pouvez écrire une expression IN comme suit : SELECT FirstName, LastName, Gender, City, State, ZIPCode, SPHome FROM Students WHERE City IN ( N'silver spring', N'rockville', N'chevy chase') ; En général, c'est une habitude d'inclure toute l'instruction IN entre ses propres parenthèses. L'instruction ci-dessus devrait produire :
Pour affiner votre analyse de données, vous pouvez utiliser des fonctions, si vous créez vous-même les fonctions ou les fonctions intégrées de Transact-SQL. Comme toujours mentionné, les premiers candidats des fonctions que vous devez essayer d'utiliser sont les fonctions intégrées, dont certaines que nous avons examinées dans la Leçon 7. Pour utiliser une fonction intégrée, dans l'espace réservé de la colonne, tapez le nom de la fonction, suivi de ses parenthèses. Si la fonction prend certains paramètres, n'oubliez pas de suivre les règles pour appeler une fonction paramétrée. Voici un exemple qui utilise certaines fonctions intégrées basées sur la date pour afficher les âges des étudiants : SELECT FirstName, LastName, Gender,
DATEDIFF(year, DateOfBirth, GETDATE()) AS Age
FROM Students
Cela donnerait :
Vous pouvez également inclure une fonction dans l'un des opérateurs que nous avons examinés jusqu'ici. Voici un exemple : SELECT FirstName, LastName, Gender, DateOfBirth, SPHome
FROM Students
WHERE (DateOfBirth BETWEEN CONVERT(datetime2, N'1995-01-01', 102) AND
CONVERT(datetime2, N'1999-12-31', 102))
Vous pouvez également impliquer une fonction intégrée dans une expression.
Si aucune des fonctions intégrées ne répond à vos besoins, vous pouvez créer votre propre et l'utiliser lors de l'analyse de données. Bien évidemment, vous devez d'abord créer la fonction. Voici un exemple de deux fonctions créées dans la base de données de ROSH : USE ROSH ;
GO
/* =============================================
Author : FunctionX
Create date : Friday 6 april, 2007
Description : This function is used
to get the full name of a student
============================================= */
CREATE FUNCTION GetFullName
(
@FName varchar(20),
@LName varchar(20)
)
RETURNS varchar(41)
AS
BEGIN
RETURN @LName +', N' + @FName ;
END ;
GO
/* =============================================
Author : FunctionX :
Create date : Saturday 7 april, 2007
Description : This function is used to display Yes or No
============================================= */
CREATE FUNCTION ShowYesOrNo
(
@SPHomeStatus bit
)
RETURNS varchar(3)
AS
BEGIN
DECLARE @Result varchar(3) ;
IF @SPHomeStatus = 0
SET @Result = N'No ';
ELSE
SET @Result = N'Yes ;
RETURN @ résultats ;
END ;
GO
Une fois qu'une fonction est prête, dans l'espace réservé de votre instruction SQL, tapez dbo., suivi du nom de la fonction, ses parenthèses et son (ses) paremètre (s), le cas échéant, à l'intérieur des parenthèses. Voici un exemple : SELECT StudentID,
dbo.GetFullName(FirstName, LastName) AS [Student's Name],
Gender,
dbo.ShowYesOrNo(SPHome) AS [Live's in a Single Parent Home ?],
ParentsNames AS [Parents' Names]
FROM Students ;
GO
Cela donnerait :
|
||||||||||||||||||||||||||||||||||||
|
|
||
| Précédent | Copyright © 2010 Yevol | Suivant |
|
|
||