Teradata - Opérateurs SET
Les opérateurs SET combinent les résultats de plusieurs instructions SELECT. Cela peut ressembler à Joins, mais les jointures combinent des colonnes de plusieurs tables, tandis que les opérateurs SET combinent des lignes de plusieurs lignes.
Règles
Le nombre de colonnes de chaque instruction SELECT doit être le même.
Les types de données de chaque SELECT doivent être compatibles.
ORDER BY doit être inclus uniquement dans l'instruction SELECT finale.
SYNDICAT
L'instruction UNION est utilisée pour combiner les résultats de plusieurs instructions SELECT. Il ignore les doublons.
Syntaxe
Voici la syntaxe de base de l'instruction UNION.
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
UNION
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
Exemple
Considérez le tableau des employés et le tableau des salaires suivants.
Numéro d'employé | Prénom | Nom de famille | JoinedDate | DépartementNon | Date de naissance |
---|---|---|---|---|---|
101 | Mike | James | 27/03/2005 | 1 | 05/01/1980 |
102 | Robert | Williams | 25/04/2007 | 2 | 05/03/1983 |
103 | Peter | Paul | 21/03/2007 | 2 | 01/04/1983 |
104 | Alex | Stuart | 2/1/2008 | 2 | 06/11/1984 |
105 | Robert | James | 1/4/2008 | 3 | 01/12/1984 |
Numéro d'employé | Brut | Déduction | Salaire net |
---|---|---|---|
101 | 40 000 | 4 000 | 36 000 |
102 | 80 000 | 6 000 | 74 000 |
103 | 90 000 | 7 000 | 83 000 |
104 | 75 000 | 5 000 | 70 000 |
La requête UNION suivante combine la valeur EmployeeNo de la table Employee et Salary.
SELECT EmployeeNo
FROM
Employee
UNION
SELECT EmployeeNo
FROM
Salary;
Lorsque la requête est exécutée, elle produit la sortie suivante.
EmployeeNo
-----------
101
102
103
104
105
UNION TOUT
L'instruction UNION ALL est similaire à UNION, elle combine les résultats de plusieurs tables, y compris les lignes en double.
Syntaxe
Voici la syntaxe de base de l'instruction UNION ALL.
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
UNION ALL
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
Exemple
Voici un exemple pour l'instruction UNION ALL.
SELECT EmployeeNo
FROM
Employee
UNION ALL
SELECT EmployeeNo
FROM
Salary;
Lorsque la requête ci-dessus est exécutée, elle produit la sortie suivante. Vous pouvez voir qu'il renvoie également les doublons.
EmployeeNo
-----------
101
104
102
105
103
101
104
102
103
COUPER
La commande INTERSECT est également utilisée pour combiner les résultats de plusieurs instructions SELECT. Il renvoie les lignes de la première instruction SELECT qui a une correspondance correspondante dans les secondes instructions SELECT. En d'autres termes, il renvoie les lignes qui existent dans les deux instructions SELECT.
Syntaxe
Voici la syntaxe de base de l'instruction INTERSECT.
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
INTERSECT
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
Exemple
Voici un exemple de déclaration INTERSECT. Il renvoie les valeurs EmployeeNo qui existent dans les deux tables.
SELECT EmployeeNo
FROM
Employee
INTERSECT
SELECT EmployeeNo
FROM
Salary;
Lorsque la requête ci-dessus est exécutée, elle renvoie les enregistrements suivants. EmployeeNo 105 est exclu car il n'existe pas dans la table SALARY.
EmployeeNo
-----------
101
104
102
103
MOINS / SAUF
Les commandes MINUS / EXCEPT combinent les lignes de plusieurs tables et retournent les lignes qui se trouvent dans le premier SELECT mais pas dans le second SELECT. Ils renvoient tous les deux les mêmes résultats.
Syntaxe
Voici la syntaxe de base de l'instruction MINUS.
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
MINUS
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
Exemple
Voici un exemple de déclaration MINUS.
SELECT EmployeeNo
FROM
Employee
MINUS
SELECT EmployeeNo
FROM
Salary;
Lorsque cette requête est exécutée, elle renvoie l'enregistrement suivant.
EmployeeNo
-----------
105