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