adplus-dvertising

Combinez les résultats de deux ou plusieurs instructions SELECT - UNION

Combinez les résultats de deux ou plusieurs instructions SELECT - UNION

La clause/opérateur SQL UNION est utilisée pour combiner les résultats de deux ou plusieurs instructions SELECT sans renvoyer les lignes en double.

Pour utiliser cette clause UNION, chaque instruction SELECT doit avoir :

  •   Le même nombre de colonnes sélectionnées
  •   Le même type de données et
  •   Les avoir dans le même ordre

Mais ils n'ont pas besoin d'être dans la même longueur.

La clause UNION produit des valeurs distinctes dans le jeu de résultats. Pour extraire les valeurs en double, UNION ALL doit être utilisée à la place de UNION.

Syntaxe - UNION
                                SELECT colonne1 [, colonne2 ]
                                FROM table1 [, table2 ]
                                [WHERE condition]
                                    
                                UNION
                                    
                                SELECT colonne1 [, colonne2 ]
                                FROM table1 [, table2 ]
                                [WHERE condition]
                            
Syntaxe - UNION ALL
                                SELECT colonne1 [, colonne2 ]
                                FROM table1 [, table2 ]
                                [WHERE condition]
                                    
                                UNION ALL
                                    
                                SELECT colonne1 [, colonne2 ]
                                FROM table1 [, table2 ]
                                [WHERE condition]
                            

Ici, la condition donnée peut être toute expression donnée en fonction de vos besoins.

Pendant ce cours, nous allons travailler sur ces 2 tables
Table - Employes
+----+---------+-----+---------+------------+------+
| Id | Nom     | Age | Salaire | Profession | Dep  |
+----+---------+-----+---------+------------+------+
|  1 | Ismail  |  25 | 6000.00 | Technicien |    2 |
|  2 | Mohamed |  30 | 2000.10 | Directeur  |    1 |
|  3 | Fatima  |  29 | 8000.00 | Assistant  |    2 |
|  4 | Dounia  |  30 | 1750.00 | Assistant  |    4 |
|  5 | Omar    |  30 | 2250.00 | Ingenieur  |    1 |
|  6 | Mostafa |  32 | 7500.00 | Formateur  |    1 |
+----+---------+-----+---------+------------+------+

Table - Conges
+------+------------+------------+-------------------+-----+
| Id_c | Date_debut | Date_fin   | Raison            | Emp |
+------+------------+------------+-------------------+-----+
|    1 | 2019-02-01 | 2019-02-15 | Voyage            |   1 |
|    2 | 2019-05-20 | 2019-06-03 | Maladie d'enfant  |   3 |
|    3 | 2019-09-01 | 2019-09-15 | Rentrée scolaire  |   4 |
+------+------------+------------+-------------------+-----+
 Remarque ! Les noms de colonne dans les deux instructions SELECT peuvent être différents mais le type de données doit être identique. Et dans le résultat, le nom de la colonne utilisée dans la première instruction SELECT apparaîtra.

Exemples

Exemple 1 :

Pour récupérer des identifiants distincts d'employés à partir des tables Employee et Conges.

                                SELECT Id From Employes
                                UNION 
                                SELECT Emp FROM Conges;
                            

Cette requête produira le jeu de résultats suivant :

+----+
| Id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
+----+
Exemple 2 :

Pour récupérer des identifiants distincts d'employés de la table Employee et de la table Conges, y compris les valeurs en double.

                                SELECT Id From Employes
                                UNION ALL
                                SELECT Emp FROM Conges;
                            

Cette requête produira le jeu de résultats suivant :

+----+
| Id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
|  1 |
|  3 |
|  4 |
+----+
Exemple 3 :

Pour récupérer Id et le Nom de la table Employes où Id est supérieur à 3, et Emp, Raison de la table Conges où Emp est inférieur à 3, en incluant les valeurs en double et en triant les données par Id.

                                SELECT Id, Nom From Employes WHERE Id > 3 
                                UNION ALL
                                SELECT Emp, Raison FROM Conges WHERE Emp < 3
                                ORDER BY Id;
                            

Cette requête produira le jeu de résultats suivant :

+----+---------+
| Id | Nom     |
+----+---------+
|  1 | Voyage  |
|  4 | Dounia  |
|  5 | Omar    |
|  6 | Mostafa |
+----+---------+
Exemple 4 :

Utilisez LEFT JOIN et RIGHT JOIN dans la clause UNION

                                SELECT E.Id, E.Nom FROM Employes as E LEFT JOIN Conges as C ON E.Id=C.Emp
                                UNION
                                SELECT E.Id, E.Nom FROM Employes as E RIGHT JOIN Conges as C ON E.Id=C.Emp;
                            

Cette requête produira le jeu de résultats suivant :

+------+---------+
| Id   | Nom     |
+------+---------+
|    1 | Ismail  |
|    3 | Fatima  |
|    4 | Dounia  |
|    2 | Mohamed |
|    5 | Omar    |
|    6 | Mostafa |
+------+---------+

Partager ce cours avec tes amis :
Rédigé par ESSADDOUKI Mostafa
ESSADDOUKI
The education of the 21st century opens up opportunities to not merely teach, but to coach, mentor, nurture and inspire.