Contacts

En utilisant Union dans SQL. Union et Union Tout dans SQL - Description et exemples pour organiser des demandes avec Union syndicale

Il est temps de parler de combinaison de données au moyen de la construction syndicat et union tout.Comme cela est parfois très utile et sans utiliser un tel design, parfois vous ne pouvez pas faire. Des exemples seront écrits dans le SGBD MSSQL 2008.En utilisant la langue SQL.

Et j'aimerais commencer par le fait que nous avons déjà examiné de nombreux exemples de demandes d'écriture pour Sql, Par exemple, l'opérateur SQL Select ou l'utilisation de fonctions SQL String, également considérées comme une programmation à la fois sur PLPGSQL et sur Transact-SQL, par exemple, comment écrire une fonction sur les fonctions PL / PGSQL et Transact-SQL - Tabular. tables, respectivement.

Je n'ai pas simplement indiqué les articles mentionnés ci-dessus, mais je leur ai signalé, car pour une meilleure compréhension et un meilleur apprentissage de la leçon d'aujourd'hui, vous avez besoin de connaissances initiales (il s'agit d'un site pour les programmeurs novices), que vous pouvez obtenir de la citation susmentionnée. Matériel.

Et donc plier. Et pour commencer, regardons ce que c'est l'oignon et l'union de tous les opérateurs.

Qu'est-ce que l'Union et l'Union Tout en SQL?

  • syndicat - Il s'agit d'une instruction SQL pour combiner le jeu de données résultant de plusieurs demandes, et cet opérateur affiche uniquement des lignes uniques dans les requêtes, c'est-à-dire Par exemple, vous combinez deux demandes et dans chacun des mêmes données, en d'autres termes, sont complètement identiques et l'opérateur de l'Union les unira en une seule ligne afin de ne pas être un double;
  • Union tout. - Il s'agit d'une instruction SQL permettant de combiner le jeu de données résultant de plusieurs demandes, et cet opérateur n'aura pas déjà absolument de lignes, même dupliquer.

Conditions requises pour les opérateurs Union et Union Tous

  1. L'ensemble de champs devrait être même Dans toutes les demandes, c'est-à-dire Le nombre de champs dans chaque demande, qui sera combiné au moyen de l'Union ou de l'Union de tous les conceptions, devrait être la même;
  2. Types de données Les champs doivent également être coïnés dans chaque demande, c'est-à-dire Par exemple, si vous souhaitez écrire une seule demande, dans lequel il y aura un type de données INTA et de la deuxième requête, le type de données VARCHAR, vous ne recevrez pas de demande et la fenêtre de la demande désactivera un bogue;
  3. En cas de tri de l'opérateur commandé par. Vous pouvez spécifier seulement après la dernière demande.

Parlons maintenant de quels cas nous devons utiliser ces opérateurs. Eh bien, par exemple, vous avez plusieurs bases de données avec une structure similaire, chacune a été créée, par exemple, pour une succursale, et vous devez combiner ces données pour fournir des rapports sur toutes les branches à la direction et le plus simple que possible. Être fait, il est possible d'écrire des demandes sur SQL, chacune accédera à différentes bases, et à travers la conception de l'Union ou de l'Union Alion pour les combiner. Parfois, il est parfois nécessaire de combiner les données dans une base de données de manière à ne pas pouvoir mettre en œuvre les associations habituelles et utiliser l'union. Pourquoi je dis "nécessaire" oui parce que cette conception augmente considérablement le temps d'exécution de la requête, si de telles données sont très nombreuses, et il n'est pas nécessaire de l'abuser.

Assez de théorie, allez à la pratique.

Noter! Comme déjà mentionné, vous écrirez des demandes dans Management Studio pour SQL Server 2008

Exemples d'utilisation de l'union et de l'union tout

Pour commencer, créant deux tables simples test_table et test_ttable_22.

Créer une table (identité (1,1) Not NULL, (18, 0) NULL, (50) NULL, Touche principale de contrainte (ASC) avec (pad_index \u003d off, statistiques_norecompute \u003d off, Ignore_dup_key \u003d Off, allow_row_locks \u003d on, allemande_page_locks \u003d ON) ON) ON GO SET ANSI_PADDING OFF OFF - et la deuxième table Créer une table (identité (1,1) non , (18, 0) , (50) NULL, clé principale de contrainte (ASC) avec (PAD_IDEX \u003d OFF , statistics_norecompute \u003d off, Ignore_dup_key \u003d Off, allemande_row_locks \u003d on, allemande_page_locks \u003d on) sur Go Set ANSI_PADDING

Ils sont identiques par exemple, seuls des noms différents. Je les ai remplis de telles données:

Nous écrivons maintenant une demande qui combinera les données résultantes dans l'une, par exemple par l'Union. La syntaxe est très simple:

Demande 1 Demande syndicale 2 Syndicat Query 3, etc.

Voici une requête:

Sélectionnez Numéro, Texte de Test_table Union Numéro de sélection, Texte de Test_table_2

Comme vous pouvez le constater, seules 5 lignes sont nées, car nous avons la première ligne de la première demande et la première ligne de la deuxième demande est la même, de sorte qu'elles combinaient.

Maintenant fusionnons à travers un syndicat tout

Voici une requête:

Numéro de sélection, Texte de Test_table Union Tout numéro de sélection, Texte de Test_table_2

Toutes les lignes ont déjà été apportées ici, car nous avons spécifié l'union tout.

Et maintenant regardons quelles erreurs peuvent être même dans cette simple requête. Par exemple, nous avons confondu la séquence de champs:

Ou nous avons indiqué un champ supplémentaire dans la première demande et, dans la seconde, cela n'a pas été fait.

Aussi, par exemple, lors de l'utilisation de la commande par:

Ici, nous avons indiqué le tri dans chaque demande et il n'était nécessaire que dans ce dernier, par exemple:

Sélectionnez Numéro, Texte de Test_table Union Tous Numéro de sélection, Texte de Test_table_2 Commander par numéro

Et enfin, je voulais dire à propos d'un tour, qui peut être utilisé lorsque, par exemple, il est encore nécessaire de générer un champ dans une demande, et il n'y a pas de choix dans d'autres ou qu'il n'est pas nécessaire, pour cela, vous pouvez écrire. cette demande:

Sélectionnez ID, Numéro, Texte de Test_table Union Tout Select », Numéro, Texte de Test_table_2

ceux. Comme vous le voyez simplement où le champ doit être vide et que la demande fonctionnera parfaitement, par exemple:

Probablement tout ce que je voulais dire à propos de la conception union et Union Toutes les langues SQL J'ai dit s'il y a des questions sur l'utilisation de ces opérateurs, demandez-leur dans les commentaires. Bonne chance!

L'opérateur de travail avec les jeux de données Union combine les ensembles résultants de deux demandes ou plus et affiche toutes les lignes de toutes les demandes comme définie un résultat.

Union fait référence à la classe d'opérateurs pour travailler avec des ensembles de données (opérateur défini). D'autres opérateurs de ce type comprennent l'intersect et l'ECCERT (ECCERT et MINUS sont des équivalents fonctionnels, mais l'ECTR est incluse dans les opérateurs ANSI / Tous les opérateurs de données permettant de manipuler simultanément les ensembles résultants de deux demandes ou plus, d'ici et de leur nom.

S0L2003 Syntaxe

Les restrictions techniques sur le nombre de demandes de la déclaration syndicale n'existent pas. La syntaxe générale est la suivante.

syndicat

syndicat

Mots clés

syndicat

Indique que les kits résultants seront combinés en un seul ensemble de résultats. Les doublons des chaînes sont supprimés par défaut.

Tout.

Les doublons de lignes de tous les ensembles résultants sont combinés.

Distinct.

Les lignes en double sont supprimées de l'ensemble résultant. Les colonnes contenant des valeurs nuls sont considérées comme des doublons. (Si les mots-clés Tous et distincts ne sont pas utilisés, DisableLet est reçu par défaut.)

Règles générales

Une seule règle importante devrait être mémorisée lors de l'utilisation de l'opérateur de l'Union: l'ordre, le numéro et le type de données des colonnes doivent être identiques dans toutes les demandes.

Les types de données ne doivent pas être identiques, mais ils doivent être compatibles. Par exemple, les types de caractères et de varchar sont compatibles. Par défaut, le traitement obtenu utilise la taille du plus grand type compatible, et dans la requête dans laquelle trois colonnes tapis Char - Char (5), Char (IO) et Char (12) sont combinés, les résultats seront en caractères. Format (12) et dans les colonnes moins de taille ajouteront des espaces supplémentaires.

Bien que, selon la norme ANSI, la déclaration d'intersection a une priorité plus élevée par rapport aux autres opérateurs de travailler avec des ensembles, sur de nombreuses plates-formes, ces opérateurs sont traités comme ayant la même priorité. Vous pouvez explicitement gérer la priorité des opérateurs à l'aide des crochets. Sinon, le SGBD est susceptible de les exécuter dans l'ordre de gauche à droite.

La proposition distincte peut (en fonction de la plate-forme) nécessite des coûts de performance significatifs, car il nécessite souvent un passage supplémentaire par l'ensemble résultant pour supprimer des enregistrements en double. Toute proposition d'augmentation de la productivité peut être spécifiée dans tous les cas où des doublons ne sont pas attendus (ou si des doublons sont autorisés).

Selon la norme ANSI, une seule commande par offre peut être utilisée. Mettez-le à la fin de la dernière déclaration de sélection. Pour éviter toute ambiguïté lorsque vous spécifiez des colonnes et des tables, assurez-vous d'assigner les pseudonymes correspondants à toutes les colonnes. Toutefois, lors de la spécification des noms de colonnes dans la demande SELECT ... Union, seul un pseudonyme de la première demande est utilisé. Par example:

Sélectionnez AU_LNAMNAME comme prénom de Authors Union Sélectionnez Emp_lname en tant que prénom de l'ordre des employés par nom de famille, prénom; seelname de l'ordre des employés par lastname

De plus, étant donné que les requêtes des opérateurs syndicaux peuvent contenir des colonnes avec des types de données compatibles, des variations de comportement de code sur différentes plates-formes peuvent être possibles, notamment en termes de longueur du type de type de données de la colonne. Par exemple, si la colonne AU_FNAME est sensiblement plus longue que la colonne Emplname de la deuxième requête, les différentes plates-formes peuvent appliquer différentes règles pour déterminer la longueur utilisée. Toutefois, en règle générale, la plate-forme est sélectionnée pour le type de données result (et moins limité).

Chaque surbd peut appliquer ses propres règles pour déterminer le nom de la colonne si les colonnes de différentes tables ont des noms différents. En règle générale, les noms de la première demande sont utilisés.

DB2.

La plate-forme DB2 prend en charge l'Union des mots-clés et l'union de toute la norme ANSI et la valeur des valeurs.

[, (expression-!, expression2, ...)] [...] [...]

Vous permet de spécifier un ou plusieurs ensembles de valeurs définies manuellement pour les entrées dans l'ensemble combiné résultant. Chacune de ces valeurs doit contenir exactement le même nombre de colonnes que dans les requêtes de l'opérateur de l'Union. Les lignes de valeurs dans l'ensemble résultant sont séparées par des virgules.

Bien que l'offre distincte de l'Union ne soit pas prise en charge, l'équivalent fonctionnel est la proposition de l'Union. L'offre correspondante n'est pas prise en charge.

Avec une union de mot clé, vous ne pouvez pas utiliser de types de données tels que Varchar, Vargraphic, BLOB, CLOB, DBCLOB, DATALINK et STRUCTURELL (mais ils peuvent être utilisés avec l'offre Union).

Si toutes les tables utilisent un nom de la colonne, ce nom est utilisé dans l'ensemble résultant. Si les noms des colonnes diffèrent, DB2 génère un nouveau nom de colonne. Après cela, cette colonne ne peut pas être utilisée dans l'ordre ou pour la mise à jour.

Si plusieurs opérateurs sont utilisés dans une requête pour les ensembles de données, ceux qui sont enfermés entre parenthèses sont effectués. Après cela, les opérateurs sont effectués dans l'ordre de gauche à droite. Cependant, toutes les opérations d'intersect sont effectuées avant les opérations de l'Union ou de l'ECTRT. Par example:

Sélectionnez EMPNO à partir de l'employé où le fonctionnement de «E%» Union Sélectionnez Empno de Emp_act où Projno in ("if1000", "if2000", "AD3110") valeurs syndicales ("AA0001), (AB0002"), (AB0002 "), )

Dans cet exemple, nous obtenons tous les identifiants des employés de la table des employés, qui consistent dans n'importe quel ministère, avec le nom commençant par "E", ainsi que l'ID de tous les employés du tableau de comptabilité EMP_ACT qui travaillent dans les projets IF1000, "If2000" et "AD3110". En outre, l'ID des employés "AA000T," AV0002 "et" AC00031 sont toujours inclus.

Mysql

Non supporté.

Oracle

La plate-forme Oracle prend en charge l'Union des mots-clés et l'union de la norme SQL ANSI. La syntaxe est la suivante.

Oracle ne supporte pas la proposition correspondante. Offrir un syndicat distinct non. Soutenu, mais l'équivalent fonctionnel est la proposition de l'Union. La plate-forme d'Oracle ne supporte pas l'utilisation des offres de l'Union Alion dans les situations suivantes.

Si la première demande de l'instruction contient des expressions dans la liste des éléments, attribuez une colonne pseudonyme à l'aide de la proposition. De plus, seule la dernière demande de l'opérateur peut contenir la commande par offre. Par exemple, vous pouvez obtenir tous les identifiants de magasin uniques (Store_ID), sans duplicats à l'aide de la demande suivante.

Sélectionnez Stor_Id à partir de Magasins Union Select STORE_ID des ventes;

PostgreSQL

La plate-forme PostgreSQL prend en charge les mots-clés de l'Union et de l'Union standard Syntaxe ANSI.

instruction Select 2 Union

La plate-forme PostgreSQL ne prend pas en charge l'utilisation de l'Union et de l'Union toutes les propositions dans les requêtes avec pour la mise à jour. PostgreSQL ne prend pas en charge la proposition correspondante. L'offre distincte de l'Union n'est pas prise en charge, l'équivalent fonctionnel est la proposition de l'Union.

La première demande de l'opérateur ne peut pas contenir d'ordre ou des offres limites. Les demandes suivantes avec Union et Union Toutes les offres peuvent contenir ces propositions, mais ces demandes doivent être incluses entre les crochets. Sinon, la commande ou la limite d'offre à droite de la droite s'appliquera à l'ensemble de l'opération.

Sélectionnez A.Au_Lname à partir d'auteurs en tant que A.AU_LNANIE comme "P%" UNI0N Sélectionnez E.lname à partir de l'employé comme e Où e.lname comme "p%";

serveur SQL

La plate-forme SQL Server prend en charge l'Union des mots-clés et l'union de la syntaxe ANSI standard.

instruction Sélectionnez 1 Union

instruction Select 2 Union

SQL Server ne prend pas en charge la proposition correspondante. L'offre distincte de l'Union n'est pas prise en charge, mais l'équivalent fonctionnel est la proposition de l'Union.

Avec les offres d'Union et de l'Union Tout, vous pouvez utiliser la déclaration Sélectionner ... dans la déclaration, mais dans le mot-clé doit être dans la première demande de l'opérateur d'unification. Mots-clés spéciaux, tels que Select Tor and Group par ... avec cube, peut être utilisé dans toutes les requêtes de l'Union. Cependant, veillez à inclure ces propositions dans toutes les demandes d'association. Si vous utilisez SELECT TOR ou groupe par ... avec cube dans une requête, l'opération ne sera pas exécutée.

Toutes les demandes de l'Union doivent contenir le même nombre de colonnes. Les types de colonnes de données ne doivent pas nécessairement être identiques, mais ils doivent être implicitement donnés les uns aux autres. Par exemple, le partage de colonnes Char et Varcharne est autorisé. Lorsque les données SQL Server sont affichées lors de la détermination du type de type de données, la taille de la plus grande colonne utilise la taille de l'ensemble de résultats. Ainsi, si le manuel SELECT ... Union utilise des colonnes Char (5) et Char (Io), les données des deux colonnes seront affichées dans la colonne Char (IO). Les types de données numériques sont fournis et affichés comme type de précision le plus élevé.

Par exemple, la requête suivante combine les résultats de deux demandes indépendantes à l'aide du groupe par ... avec ... avec cube.

Dans la plupart Requêtes SQL Un opérateur est utilisé, qui est renvoyé d'une ou plusieurs tables. Sql Vous permet également d'effectuer simultanément plusieurs requêtes distinctes et d'afficher le résultat en tant que jeu de données unique. Ces demandes combinées sont généralement appelées Combinaisons ou alors Demandes complexes.

1. Utiliser l'opérateur de l'Union

Demandes en langue Sql Combiné à l'aide de l'opérateur syndicat. Pour ce faire, vous devez spécifier chaque demande. SÉLECTIONNER et placez un mot-clé entre eux syndicat. Restrictions sur le nombre d'opérateur utilisé syndicat Il n'y a pas de demande dans une demande générale. Dans la section précédente, nous avons noté que Accès. n'a pas la capacité de créer Association externe complète, maintenant nous verrons comment il peut être réalisé grâce à l'opérateur syndicat.

SÉLECTIONNER *
De Sumproduct Gauche Joindre des vendeurs sur SumProduct.City \u003d Sellers.City
syndicat
Sélectionnez *

De Sumproduct Droit Rejoignez Vendeurs sur SumProduct.City \u003d Sellers.City

Nous voyons que la demande a déplacé les deux colonnes à partir de la première table - et de l'autre, que tous les enregistrements soient conformes à une autre table.

Il convient également de noter que dans de nombreux cas à la place syndicat Nous pouvons utiliser l'offre Où. Avec de nombreuses conditions et reçoivent un résultat similaire. Cependant, en raison de syndicat Les enregistrements ont l'air plus laconique et compréhensible. Il est également nécessaire de respecter certaines règles lors de la rédaction de requêtes combinées:

  • enquête syndicat doit inclure deux opérateurs ou plus SÉLECTIONNERséparé par un mot clé syndicat (C'est-à-dire que si la requête utilise quatre relevés de sélection, il doit y avoir trois mots-clés de l'Union)
  • chaque demande dans l'opérateur syndicat Doit avoir les mêmes colonnes, expressions ou fonctions statistiques, qui devraient en outre être répertoriées dans le même ordre
  • les types de colonnes doivent être compatibles. Ils ne doivent pas nécessairement être un type, mais sont tenus d'avoir un type similaire à DBMS Pourrait certainement les convertir (par exemple, il peut s'agir de divers types de données numériques ou de différentes dates).

2. Allumez ou désactivez les lignes de répétition

Demande S. syndicat Supprime automatiquement toutes les lignes répétitives à partir du jeu de résultats de la requête (c'est-à-dire qu'il se comporte comme des suggestions Où. avec plusieurs conditions dans un opérateur SÉLECTIONNER). Ce comportement de l'opérateur syndicat Par défaut, mais si vous le souhaitez, nous pouvons le changer. Pour ce faire, nous devrions utiliser l'opérateur Union tout. plutôt syndicat.

3. Triez les résultats des requêtes combinées

Les résultats de l'exécution de l'opérateur SÉLECTIONNER trié par offre Commandé par.. Lors de la combinaison des demandes avec syndicat Une seule phrase Commandé par. peut être utilisé et il doit être mis dans le dernier opérateur SÉLECTIONNER. En effet, dans la pratique, il n'y a pas de sens particulier d'une partie des résultats pour trier dans une commande, et l'autre partie est dans l'autre. Par conséquent, plusieurs phrases Commandé par. Il n'est pas autorisé à appliquer.

L'opérateur du syndicat SQL combine le résultat de deux applications ou plus de sélection.

Opérateur SQL Union

L'opérateur du syndicat est utilisé pour combiner les nombreux résultats de deux applications ou plus de sélection.

Veuillez noter que chaque opérateur d'orest à l'intérieur de l'Union doit avoir le même nombre de colonnes. Les colonnes doivent également avoir les mêmes types de données. De plus, les colonnes de chaque zeest doivent être dans le même ordre.

SQL Union Syntaxe

SÉLECTIONNER nom de colonne (s) De. tableau 1
syndicat
SÉLECTIONNER nom de colonne (s) De. tableau 2. ;

Remarque: l'opérateur de l'Union ne sélectionne que des valeurs par défaut différentes. Pour résoudre les valeurs répétitives, utilisez le mot-clé Alion.

SQL Union TOUT SYNATAX

SÉLECTIONNER nom de colonne (s) De. tableau 1
Union tout.
SÉLECTIONNER nom de colonne (s) De. tableau 2. ;

PS: Les noms des colonnes dans les résultats des demandes, alliés, en règle générale, sont égaux aux noms des colonnes dans le premier ZEEST dans l'Union.

Version de démonstration de la base de données

Dans cette leçon, nous utiliserons la base de données boréenne bien connue.

Vous trouverez ci-dessous une sélection de tables "clients":

ID personnalisé Nom du client La personne de contact Adresse ville Code postal Pays
1 Alfreds Futterkiste. Maria Anders. Obere Str. 57 Berlin. 12209 Allemagne
2 Ana Trujillo Empadados y helados Ana Trujillo. Avda. De la Constitucion 2222 Mexique D.F. 05021 Mexique.
3 Antonio Moreno Taqueria Antonio Moreno. Mataderos 2312. Mexique D.F. 05023 Mexique.

Et choisir des tables "fournisseurs":

Exemple SQL Union

Suivant SQL - Opérateur choisit tous divers Villes (uniquement des valeurs individuelles) des tables "clients" et "fournisseurs":

Remarque: Union ne peut pas être utilisée pour afficher la liste de toutes les villes de deux tables. Si plusieurs clients et fournisseurs, les mêmes villes, chaque ville ne sera spécifiée qu'une fois. Union ne sélectionne que certaines valeurs. À l'aide de Union, sélectionnez également des valeurs répétitives!

SQL Union TOUS EXEMPLE

tout (Valeurs dupliquées) également des villes de tables "clients" et "fournisseurs":

SQL Union tout avec où

Suivant SQL - Opérateur utilise un syndicat pour sélectionner tout (valeurs dupliquées) aussi allemand Villes des tables "clients" et "fournisseurs".

L'opérateur SQL Union est conçu pour combiner les tables de base de données résultantes obtenues à l'aide du mot Select. La condition de combiner les tables résultantes: la coïncidence du nombre, la procédure de suivi et le type de données de colonnes. L'ordre par devrait s'appliquer aux résultats de la fusion et de la poste uniquement à la fin de la demande composite. L'opérateur du syntaxier a la syntaxe suivante:

Select_stolbam_names (1..n) de nom_table Union Sélectionnez Noms_stolbtsy (1..n) à partir de nom_table

Dans cette conception, les demandes intégrées peuvent avoir des conditions dans la section où la section et peut ne pas les avoir. Utilisation de l'opérateur Union, vous pouvez combiner des demandes de récupération de données à partir d'une table et de différents.

Lorsque vous utilisez l'opérateur de l'Union sans mot, le résultat ne contient pas de duplicats, mais avec le mot tout contient des doublons.

Résultats et valeurs individuelles dans une table à l'aide de l'opérateur SQL Union

Une demande peut être dérivée du tableau des valeurs individuelles des colonnes, par exemple, le nombre d'années élaborées par des employés de la société, de la taille de leurs salaires et d'autres. Une autre requête - en utilisant fonctions globales - Vous pouvez obtenir, par exemple, le montant des salaires reçus par les employés des ministères ou ceux ou d'autres postes, ou la moyenne des années d'emploi (dans une telle demande le regroupement à l'aide du groupe par opérateur).

Et si nous devons entrer dans la même table et le résumé de toutes les valeurs individuelles, et les valeurs finales? Ici, l'opérateur de SQL Union vient à la rescousse, avec laquelle deux demandes sont combinées. Le résultat de la fusion est tenu d'appliquer la commande à l'aide de la commande par déclaration. Pour lequel il est nécessaire, il sera mieux compris dans des exemples.

Exemple 1. Dans la base de données de la société, une table contenant des données contenant des données sur les employés de la société. Il dispose de colonnes salariales (salaires), d'emploi (position) et d'années (durée de l'expérience de travail). La première requête renvoie des tailles de salaire individuelles, commandées par des postes:

Sélectionnez Nom, Job, Salaire de la commande du personnel par emploi

Nom.EmploiUn salaire.
Sanders.Mgr.18357.5
Marenghi.Mgr.17506.8
PernageuxVentes18171.2
DocteurVentes12322.4
FacteurVentes16228.7

La deuxième demande retournera le salaire total des postes. Nous préparons déjà cette demande de se connecter au premier, nous nous souviendrons donc que la condition composée est égale au nombre de colonnes, la coïncidence de leurs noms, la procédure de suivi et des types de données. Par conséquent, nous allumons la table avec la colonne Nom avec une valeur arbitraire "z-totale" dans la table avec les résultats:

Sélectionnez "Z-Total" comme nom, travail, somme (salaire) comme salaire du groupe de travail par emploi

Le résultat de la requête sera le tableau suivant:

Nom.EmploiUn salaire.
Z-totalMgr.35864.3
Z-totalVentes46722.3

Maintenant, combinez des demandes à l'aide de l'opérateur de l'Union et appliquez la commande par l'opérateur au résultat de la combinaison. Le groupe suit deux colonnes: position (travail) et nom (nom) aux lignes avec les valeurs finales (totales) dans lesquelles la valeur du nom est "z-totale", étaient sous des lignes individuelles avec des valeurs individuelles. La combinaison des résultats de la requête sera la suivante:

(Sélectionnez Nom, Job, Salaire du personnel) Union (Sélectionnez «Z-Total» comme nom, travail, somme (salaire) comme salaire du groupe de travail par emploi) Commande par emploi, Nom

Le résultat de l'exécution de la demande avec l'opérateur de l'Union sera le tableau suivant dans lequel chaque première ligne de chaque groupe de poste contiendra le salaire total des employés travaillant dans ce poste:

Nom.EmploiUn salaire.
Marenghi.Mgr.17506.8
Sanders.Mgr.18357.5
Z-totalMgr.35864.3
DocteurVentes12322.4
FacteurVentes16228.7
PernageuxVentes18171.2
Z-totalVentes46722.3

Écrivez des demandes d'enquêtes à l'aide de Union vous-même, puis voir la décision

Exemple 2. Les données sont les mêmes que dans l'exemple 1, mais la tâche est un peu plus compliquée. Il est nécessaire de se retirer dans la même table non seulement des tailles de salaire individuelles, commandées par des positions et des salaires totaux de postes, mais le salaire total de tous les employés.

Exemple 3. Dans la base de données de la société, une table contenant des données contenant des données sur les employés de la société. Il a nommé colonnes (nom de famille), département (numéro de division) et années (durée du travail).

Nom.DépartementAnnées.
Sanders.20 7
Pernageux20 8
Marenghi.38 5
Docteur20 5
Facteur38 8

Dans le même tableau, l'expérience de travail moyenne dans les départements et les valeurs individuelles de la durée de l'expérience de l'emploi des employés regroupés par les ministères.

Autres cas de combinaison des demandes à une table à l'aide de l'opérateur de l'Union SQL

Exemple 4. Dans la base de données de la société, une table contenant des données contenant des données sur les employés de la société. Il dispose de colonnes salariales (salaires), d'emploi (position) et d'années (durée de l'expérience de travail). La première demande est nécessaire pour obtenir des données d'employés, soit plus de 21 000 salaires:

Le résultat de la requête sera le tableau suivant:

Maintenant, les données dans lesquelles les critères de sélection utilisés dans deux demandes sont combinés. Nous combinons des demandes à l'aide de l'opérateur de l'Union:

Le résultat de l'exécution de la demande avec l'opérateur de l'Union sera le tableau suivant:

IdentifiantNom.
10 Sanders.
30 Marenghi.
100 Se casser la gueule.
140 Fraye.
160 Molinare.
240 Daniels.
260 Jones

Une demande à l'opérateur de l'Union peut retourner un plus grand nombre de colonnes, il est important de répéter le nombre de colonnes, l'ordre de leurs types de suivi et de données coïncidaient.

Premiers être obtenus pour obtenir des données sur les catégories et les parties des catégories d'annonces dans lesquelles plus de 100 annonces sont soumises par semaine. Nous écrivons la requête suivante:

Le résultat de la requête sera le tableau suivant:

Le résultat de la requête sera le tableau suivant:

Vous souhaitez maintenant extraire les données correspondant aux critères et aux première et deuxième demandes. Nous combinons des demandes à l'aide de l'opérateur de l'Union:

Le résultat de la requête sera le tableau suivant:

Combinant les résultats des demandes de deux tables à l'aide de l'opérateur de l'Union SQL

Jusqu'à présent, nous avons envisagé des demandes avec l'opérateur de l'Union, dans laquelle les résultats ont été combinés d'une table. Nous allons maintenant combiner les résultats des deux tables.

Exemple 6. Il y a une base de données d'un entrepôt de matériaux de construction. Il a une table contenant des données de voyage. La table Vinil contient des données sur papier peint vinyle, table de papier - sur papier peint de papier. Il est nécessaire de connaître les données sur les prix du papier peint d'une table et d'une autre table.

Pour extraire des données non répétitives sur le papier peint vinyle, faites une demande avec le mot distinct:

Sélectionnez un prix distinct de Vinil

Le résultat de la requête sera le tableau suivant:

Composez maintenant une demande combinée avec l'opérateur de l'Union:

Sélectionner un prix distinct de Vinil Union Sélectionnez un prix distinct de papier

Puisque nous n'utilisons pas le mot tout, les doublons de valeurs de 400, 500 et 530 ne seront pas affichés. Le résultat de la requête sera le tableau suivant:

Prix
300
320
360
400
430
500
530
610
720
800
850

Exemple 7. La base de données et les tables sont les mêmes que dans l'exemple précédent.

Il est nécessaire d'obtenir tous les prix des prix, y compris la répétition. Une demande de combinaison de résultats à l'aide de l'opérateur de l'Union sera similaire à la demande de l'exemple précédent, mais au lieu de l'Union, nous écrivons un syndicat tout:

Sélectionner un prix distinct de Vinil Union Tous Sélectionner un prix distinct de papier

Le résultat de la requête sera le tableau suivant:

Prix
300
320
360
400
400
430
500
500
530
530
610
720
800
850

Utilisation de l'opérateur SQL Union, vous pouvez combiner les deux requêtes simples et demandes contenant des sous-requêtes (demandes investies) . Considérer l'exemple approprié.

Exemple 8. Il y a une base de données "théâtre". La table de lecture contient des données sur les données de production (noms dans la colonne Nom), dans la table Director - les administrateurs du directeur (dans la colonne FNAME - Nom, dans la colonne LNAME - Nom). La clé principale de la table du réalisateur - Dir_ID est l'ID du réalisateur. Dir_ID également - la clé externe de la table de jeu, elle fait référence à la clé principale de la table du réalisateur. Il est nécessaire de supprimer les interprètes du réalisateur John Barton et Trevor Nunn.

Décision. Nous combinons les résultats des deux demandes - on renvoie les performances du réalisateur John Barton, l'autre - Directeur Trevor Nunn. Et chacune de ces demandes combinées à la table de jeu est effectuée avec une sous-traitance de la table du réalisateur, qui renvoie le dir_id par le nom et le directeur du nom de famille. Chaque requête externe accepte la valeur de la touche DIR_ID dans la requête ci-jointe et renvoie les noms des performances (nom):

Bases de données relationnelles et langue SQL



Avez-vous aimé l'article? Partagez-le