Combiner des lignes de Table en utilisant UNION

combiner des lignes de Table en utilisant UNION

dans cette leçon, nous allons parler de la clause UNION. Vous pouvez utiliser la clause UNION pour combiner des lignes de table de deux requêtes différentes en un seul résultat. Contrairement à une jointure, qui combine les colonnes de tables différentes, une union combine des lignes de différentes tables. Voici une illustration de ce à quoi ressemble une UNION

Unions

tous les exemples de cette leçon sont basés sur Microsoft SQL Server Management Studio et la base de données AdventureWorks2012., Vous pouvez commencer à utiliser ces outils gratuits en utilisant mon Guide pour commencer à utiliser SQL Server.

En SQL cette déclaration ressemble

SELECT columnlistFROM table1UNIONSELECT columnlistFROM table2

pour l’union de deux tables, il y a quelques exigences:

  1. Le nombre de colonnes doit être la même pour les deux instructions select.
  2. Les colonnes, dans l’ordre, doit être du même type de données.

Lorsque les lignes sont combinées les doublons sont éliminés. Si vous souhaitez conserver toutes les lignes des résultats de l’instruction select, utilisez le mot clé ALL.,

exemples

Union two tables

supposons qu’on vous ait demandé de fournir une liste de toutes les catégories et sous-catégories de produits AdventureWorks2012. Pour ce faire, vous pouvez écrire deux requêtes distinctes et fournir deux résultats distincts, tels que deux feuilles de calcul, ou vous pouvez utiliser la clause UNION pour fournir un résultat combiné:

SELECT C.NameFROM Production.ProductCategory AS CUNION ALLSELECT S.NameFROM Production.ProductSubcategory AS S

à partir de cela, vous obtenez une liste combinée de noms, mais supposons que vous vouliez savoir quels noms étaient des catégories, Pour ce faire, vous pouvez ajouter une nouvelle colonne indiquant le type de catégorie:

SELECT 'category', C.NameFROM Production.ProductCategory AS CUNION ALLSELECT 'subcategory', S.NameFROM Production.ProductSubcategory AS S

Union versus Union All

la différence entre UNION et UNION ALL est que With UNION renvoie un ensemble unique de lignes à partir du résultat de l’union; tandis que UNION ALL renvoie chaque ligne.

Exemple:

SELECT person.Address.CityFROM person.Address

Retourne 19614 lignes.

SELECT person.Address.CityFROM person.AddressUNIONSELECT person.Address.CityFROM person.Address

renvoie 575 lignes, c’est-à-dire le nombre de noms de ville distincts dans la table. L’exécution de UNION All renvoie deux fois l’ensemble des noms de ville:

SELECT person.Address.CityFROM person.AddressUNION ALLSELECT person.Address.CityFROM person.Address

il renvoie 39228 lignes.,

comme vous pouvez le voir, il y a une grande différence avec l’utilisation du qualificatif ALL. Lorsqu’ils ne sont pas utilisés, les résultats sont des valeurs distinctes. Les doublons ne sont pas seulement éliminés entre les lignes de chaque résultat, mais aussi de l’intérieur.

Union de trois tables

supposons que la direction souhaite une liste combinée de personnes, de fournisseurs et de noms de magasins identifiés par source.

pour ce faire, nous créons trois requêtes distinctes, puis utilisons la clause union pour les assembler. Nous allons ensuite commander la liste.,

À première vue, on pense que la clause ORDER BY ne s’appliquerait qu’à la dernière instruction select, mais, en fait, elle s’applique à tous les résultats renvoyés par l’union. Le moteur de base de données traite d’abord toutes les instructions union puis la commande par.

Si vous avez des doutes sur l’ordre de traitement, vous pouvez utiliser la parenthèse « ()” pour contrôler l’ordre d’évaluation un peu comme vous pouvez le faire avec les expressions. Voici à quoi ressemblerait la déclaration, en général, avec des parenthèses:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Aller à la barre d’outils