Vous êtes sur la page 1sur 17

Ordre des mots clés

SELECT données à afficher on les sépare par une virgule


FROM Table d’origine des données (mettre les jointures entre
le FROM et le WHERE)
WHERE Filtres à réaliser sur les données on les sépare avec un
AND ou un OR
GROUP BY données pour lesquelles on souhaite grouper
plusieurs résultats on les sépare par une virgule
HAVING Filtres à réaliser sur les données de type agrégations
on les sépare par un AND ou un OR
; toujours finir le code par un point virgule
Valeur en dur
• Nombre (ex : 45) : 45
• Texte (ex : LIMOGES) : 'LIMOGES'
• Date (ex : 01/01/2016) : #01/01/2016#
Opérateurs
• = Egal à
• > Supérieur à
• >= Supérieur ou égal à
• < Inférieur à
• <= Inférieur ou égal à
• <> Différent de
• IN (Val1,Val2) Dans liste
• NOT IN (Val1,Val2) Pas dans liste
• LIKE (Val1) Ressemble à
• IS NULL Est nul
• IS NOT NULL Est non nul
• BETWEEN Entre
Agrégations
• MIN(Var)
• AVG(Var)
• MAX (Var)
• COUNT(Var)
• COUNT(distinct Var)
• SUM(Var)
Fonctions
• LEN(variable) : Nombre de caractère
• LEFT(variable, x) : affiche les x caractères de gauche
• MID(variable, x, y) : affiche les y caractères qui suivent le caractère de rang x
• RIGHT (variable, x) : affiche les x caractères de droite
• RTRIM(variable) : supprime les espaces à droite
• YEAR(variable) : affiche l’année d’une date
• MONTH(variable) : affiche le mois d’une date
• DAY(variable) : affiche le jour d’une date
• DATE ADD(type, x, variable) : permet de modifier des données temporelles
• VAL(variable) : transforme la variable en numérique
• STR(variable) : transforme la variable en texte
• IIF( Condition, Valeur si vrai, Valeur si faux) : équivalent à la fonction SI sur
Excel
LEFT JOIN
Table 1 Table 2
Colonne Client Colonne Client
A A
B B
C D

SELECT *
FROM Table1
LEFT JOIN Table2
ON Table1.Client = Table2.Client
Table1.Client Table2.Client
A A
B B
C
RIGHT JOIN
Table 1 Table 2
Colonne Client Colonne Client
A A
B B
C D

SELECT *
FROM Table1
RIGHT JOIN Table2
ON Table1.Client = Table2.Client
Table1.Client Table2.Client
A A
B B
D
INNER JOIN
Table 1 Table 2
Colonne Client Colonne Client
A A
B B
C D

SELECT *
FROM Table1
INNER JOIN Table2
ON Table1.Client = Table2.Client
Table1.Client Table2.Client
A A
B B
Table 1
UNION
Table 2
Colonne Client Colonne Client
A A
B B
C D
SELECT *
FROM Table1
UNION
SELECT *
FROM Table2

Client
A
B
C
A
B
D
Table 1
MINUS
Table 2
Colonne Client Colonne Client
A A
B B
C D
SELECT *
FROM Table1
MINUS
SELECT *
FROM Table2

Client
C
Exemple 2
• Imaginons 3 tables :
Période N_Personne Epargne
201512 123456 5000
201601 123456 10000
– Epargne : 201602
201512
123456
456789
10500
0
201601 456789 2500

Période N_Personne Encours_sur_client Provision


– Risque : 201512
201601
123456
123456
20000
19000
0
0
201602 123456 15000 0
201512 456789 50000 50000
201601 456789 49000 49000

Période N_Contrat Mt_PNB

– PNB: 201512
201601
A1
A1
12000
2000
201512 B1 5000
201601 B1 100
Exemple 2.1
• Si on veut afficher l’épargne et l’encours que
l’on porte par client on doit fusionner les
informations des tables Epargne et Risques
– En joignant les 2 tables sans préciser comment via
le code :
SELECT *
FROM EPARGNE,
RISQUE
Les données n’ont aucun sens sur certaines lignes nous avons l’épargne du
client 123456 qui est associée à l’encours risque du client 456789
On va donc rajouter une condition en indiquant que les N_Personne
doivent être égaux, code ci-dessous :

SELECT *
FROM EPARGNE
LEFT JOIN RISQUE
ON EPARGNE.N_Personne = RISQUE.N_Personne

On remarque que notre nombre de ligne reste supérieur à notre table


d’origine ce qui ne devrait pas être le cas et on observe que la période
peut être différente il faut donc aussi qu’elle soit identique dans les 2
tables
On va donc rajouter une condition en indiquant que les Période doivent
être égales, code ci-dessous :

SELECT *
FROM EPARGNE
LEFT JOIN RISQUE
ON EPARGNE.N_Personne = RISQUE.N_Personne
AND EPARGNE.Période = RISQUE.Période

On retrouve quelque chose de cohérent et on peut comparer les chiffres


Exemple 2.2
• Si on veut afficher l’encours et le PNB par
client on doit fusionner les informations des
tables Risques et PNB
– En joignant les 2 tables sans préciser comment via
le code :
SELECT *
FROM RISQUE,
PNB
Les données n’ont aucun sens en effet la table PNB n’a pas la notion de client même en
fusionnant via la période nous ne pourrons pas avoir de résultats cohérent par client

Les données n’ont aucun sens en effet la table PNB n’a pas la notion de client même en
fusionnant via la période nous ne pourrons pas avoir de résultats cohérent par client

Vous aimerez peut-être aussi