Réponses:
UNION
place les lignes des requêtes les unes après les autres, tout en JOIN
créant un produit cartésien et en le sous-ensemble - des opérations complètement différentes. Exemple trivial de UNION
:
mysql> SELECT 23 AS bah
-> UNION
-> SELECT 45 AS bah;
+-----+
| bah |
+-----+
| 23 |
| 45 |
+-----+
2 rows in set (0.00 sec)
exemple trivial similaire de JOIN
:
mysql> SELECT * FROM
-> (SELECT 23 AS bah) AS foo
-> JOIN
-> (SELECT 45 AS bah) AS bar
-> ON (33=33);
+-----+-----+
| foo | bar |
+-----+-----+
| 23 | 45 |
+-----+-----+
1 row in set (0.01 sec)
UNION-JOIN
et comment puis-je l'accomplir en SQL standard? Maria DB a une commande union join
, mais pas d'autres bases de données. Merci.
Les jointures et les unions peuvent être utilisées pour combiner les données d'une ou plusieurs tables. La différence réside dans la façon dont les données sont combinées.
En termes simples, les jointures combinent les données dans de nouvelles colonnes . Si deux tables sont jointes, les données de la première table sont affichées dans un ensemble de colonnes à côté de la deuxième colonne de la même ligne.
Les syndicats combinent les données dans de nouvelles lignes. Si deux tables sont «réunies», les données de la première table se trouvent dans un ensemble de lignes et les données de la deuxième table dans un autre ensemble. Les lignes sont dans le même résultat.
Voici une représentation visuelle d'une jointure. Les colonnes des tableaux A et B sont combinées en un seul résultat.
Chaque ligne du résultat contient des colonnes des DEUX tableaux A et B. Les lignes sont créées lorsque les colonnes d'un tableau correspondent aux colonnes d'un autre. Cette correspondance est appelée condition de jointure.
Cela rend les jointures vraiment super pour rechercher des valeurs et les inclure dans les résultats. Ceci est généralement le résultat de la dénormalisation (inversion de la normalisation) et implique l'utilisation de la clé étrangère dans une table pour rechercher des valeurs de colonne en utilisant la clé primaire dans une autre.
Comparez maintenant la représentation ci-dessus avec celle d'un syndicat. Dans une union, chaque ligne du résultat provient d'une table OU de l'autre. Dans une union, les colonnes ne sont pas combinées pour créer des résultats, les lignes sont combinées.
Les jointures et les unions peuvent être utilisées pour combiner les données d'une ou plusieurs tables en un seul résultat. Ils procèdent tous les deux de différentes manières. Alors qu'une jointure est utilisée pour combiner des colonnes de différentes tables, l'union est utilisée pour combiner des lignes.
SYNDICAT combine les résultats de deux requêtes ou plus en un seul jeu de résultats qui inclut toutes les lignes qui appartiennent à toutes les requêtes de l'union.
En utilisant JOINs , vous pouvez récupérer des données de deux tables ou plus en fonction des relations logiques entre les tables. Les jointures indiquent comment SQL doit utiliser les données d'une table pour sélectionner les lignes d'une autre table.
L'opération UNION est différente de l'utilisation de JOIN qui combinent des colonnes de deux tables.
UNION Exemple:
SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]
Production:
Column1 Column2
-------------------
1 2
3 4
JOIN Exemple:
SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId
Cela générera toutes les lignes des deux tables pour lesquelles la condition a.Id = b.AFKId
est vraie.
Vous pouvez voir les mêmes explications schématiques pour les deux, mais elles sont totalement déroutantes.
Pour UNION:
Pour JOIN:
Une jointure est utilisée pour afficher des colonnes portant des noms identiques ou différents provenant de tables différentes. La sortie affichée aura toutes les colonnes affichées individuellement. Autrement dit, les colonnes seront alignées les unes à côté des autres.
L'opérateur UNION set est utilisé pour combiner les données de deux tables qui ont des colonnes avec le même type de données. Lorsqu'une UNION est effectuée, les données des deux tables seront collectées dans une seule colonne ayant le même type de données.
Par exemple:
Voir les deux tableaux ci-dessous:
Table t1
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
Table t2
manufacturer_id manufacturer
1 ABC Gmbh
2 DEF Co KG
Maintenant, pour effectuer un type JOIN, la requête est présentée ci-dessous.
SELECT articleno, article, manufacturer
FROM t1 JOIN t2 ON (t1.manufacturer_id =
t2.manufacturer_id);
articelno article manufacturer
1 hammer ABC GmbH
2 screwdriver DEF Co KG
C'est une jointure.
UNION signifie que vous devez créer des tableaux ou des ensembles de résultats avec la même quantité et le même type de colonnes et que vous les ajoutez ensemble aux tableaux / ensembles de résultats. Regardez cet exemple:
Table year2006
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
Table year2007
Articleno article price manufacturer_id
1 hammer 6 $ 3
2 screwdriver 7 $ 4
SELECT articleno, article, price, manufactruer_id
FROM year2006
UNION
SELECT articleno, article, price, manufacturer_id
FROM year2007
articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
1 hammer 6 $ 3
2 screwdriver 7 $ 4
Ce sont des choses complètement différentes.
Une jointure vous permet de relier des données similaires dans différentes tables.
Une union renvoie les résultats de deux requêtes différentes sous la forme d'un seul jeu d'enregistrements.
Les jointures et les unions peuvent être utilisées pour combiner les données d'une ou plusieurs tables. La différence réside dans la façon dont les données sont combinées.
En termes simples, les jointures combinent les données dans de nouvelles colonnes. Si deux tables sont jointes, les données de la première table sont affichées dans un ensemble de colonnes à côté de la deuxième colonne de la même ligne.
Les syndicats combinent les données dans de nouvelles lignes. Si deux tables sont «réunies», les données de la première table se trouvent dans un ensemble de lignes et les données de la deuxième table dans un autre ensemble. Les lignes sont dans le même résultat.
N'oubliez pas que l'union fusionnera les résultats ( SQL Server pour être sûr) (fonctionnalité ou bogue?)
select 1 as id, 3 as value
union
select 1 as id, 3 as value
id, valeur
1,3
select * from (select 1 as id, 3 as value) t1 inner join (select 1 as id, 3 as value) t2 on t1.id = t2.id
id, valeur, id, valeur
1,3,1,3
1. La clause SQL Joins est utilisée pour combiner des enregistrements de deux tables ou plus dans une base de données. Un JOIN est un moyen de combiner des champs de deux tables en utilisant des valeurs communes à chacun.
2. L'opérateur SQL UNION combine le résultat de deux ou plusieurs instructions SELECT. Chaque instruction SELECT dans l'UNION doit avoir le même nombre de colonnes. Les colonnes doivent également avoir des types de données similaires. En outre, les colonnes de chaque instruction SELECT doivent être dans le même ordre.
par exemple: table 1 clients / table 2 commandes
jointure interne:
CHOISIR ID, NOM, MONTANT, DATE
DES CLIENTS
ORDRES DE JOINTURE INTÉRIEURE
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
syndicat:
CHOISIR ID, NOM, MONTANT, DATE
DES CLIENTS
ORDRES DE JOINTURE GAUCHE
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
SYNDICAT
SÉLECTIONNEZ L'ID, LE NOM, LE MONTANT ET LA DATE DES CLIENTS
ORDRES DE JOINTURE DROITE
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Utiliser UNION
UNION combine les résultats de deux requêtes ou plus en un seul jeu de résultats qui inclut toutes les lignes qui appartiennent à toutes les requêtes de l'union.
UNION Exemple: SELECT 121 AS [Colonne1], 221 AS [Colonne2] SYNDICAT SELECT 321 AS [Colonne1], 422 AS [Colonne2]
Production: Colonne1 Colonne2 ------------------- 121 221 321 422
Utilisation de JOIN
JOINs, vous pouvez récupérer des données de deux tables ou plus en fonction des relations logiques entre les tables.
JOIN Exemple: SELECT a.Column1, b.Column2 FROM TblA a INNER JOIN TblB b ON a.Id = b.id
Dans l'abstrait, ils sont similaires, en ce sens que deux tableaux ou ensembles de résultats sont combinés, mais UNION est vraiment pour combiner des ensembles de résultats avec le MÊME NOMBRE DE COLONNES avec les COLONNES AYANT DES TYPES DE DONNÉES SIMILAIRES. La STRUCTURE est la même, seules les nouvelles lignes sont ajoutées.
Dans les jointures, vous pouvez combiner des tables / jeux de résultats avec n'importe quelle structure possible, y compris une jointure cartésienne où il n'y a PAS de colonnes partagées / similaires.
J'aime penser la différence générale comme étant: