web-dev-qa-db-fra.com

Quelle est la différence entre JOIN et UNION?

Quelle est la différence entre JOIN et UNION? Puis-je avoir un exemple?

213
Gold

UNION place les lignes des requêtes les unes après les autres, alors que JOIN crée un produit cartésien et le sous-définit - 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)
267
Alex Martelli

UNION combine les résultats de deux requêtes ou plus dans un seul jeu de résultats incluant toutes les lignes appartenant à toutes les requêtes de l'union.

En utilisant JOINs , vous pouvez récupérer les 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 JOINs qui combinent des colonnes de deux tables.

UNION Exemple:

SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]

Sortie:

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.

54
Kirtan

Vous pouvez voir les mêmes explications schématiques pour les deux, mais elles sont totalement déroutantes.

Pour UNION:

 Enter image description here

Pour rejoindre:

 Enter image description here

42
Java Main

JOINDRE:

Une jointure est utilisée pour afficher des colonnes avec des noms identiques ou différents de différentes tables. La sortie affichée Aura toutes les colonnes affichées individuellement. C'est-à-dire que les colonnes Seront alignées les unes à côté des autres.

SYNDICAT:

L'opérateur de groupe UNION est utilisé pour combiner les données de deux tables Qui ont des colonnes avec 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 disposer de tables ou de jeux de résultats avec le même montant et le même type de colonnes .__ et que vous ajoutez ceci aux fichiers 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
37

Les jointures et les unions peuvent être utilisées pour combiner les données d'une ou de plusieurs tables. La différence réside dans la façon dont les données sont combinées.

En termes simples, join combine 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 colonne de la seconde table dans la même ligne.

Unions combine les données dans de nouvelles lignes. Si deux tables sont «unies» ensemble, les données de la première table sont dans un ensemble de lignes et les données de la seconde 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.

 enter image description here

Chaque ligne du résultat contient des colonnes des tables BOTH A et B. Des lignes sont créées lorsque les colonnes d'une table correspondent à des colonnes d'une autre. Cette correspondance s'appelle la condition de jointure.

Cela rend les jointures vraiment intéressantes pour rechercher des valeurs et les inclure dans les résultats. Cela est généralement le résultat d'une dénormalisation (inversion de la normalisation) et implique l'utilisation de la clé étrangère dans une table pour rechercher les valeurs de colonne à l'aide de 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 OR de l'autre. Dans une union, les colonnes ne sont pas combinées pour créer des résultats, les lignes sont combinées.

 enter image description here

Les jointures et les unions peuvent être utilisées pour combiner les données d'une ou de plusieurs tables en un seul résultat. Ils vont tous les deux sur le même chemin. Alors qu'une jointure est utilisée pour combiner des colonnes de différentes tables, l'union est utilisée pour combiner des lignes.

La source

33
Humoyun

Ce sont des choses complètement différentes.

Un join 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.

20
adeshsuryan

Union fait en sorte que deux requêtes ressemblent à une. Les jointures servent à examiner deux ou plusieurs tables dans une seule instruction de requête.

9
James L

Les jointures et les unions peuvent être utilisées pour combiner les données d'une ou de plusieurs tables. La différence réside dans la façon dont les données sont combinées.

En termes simples, les jointures combinent des 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 colonne de la seconde table dans la même ligne.

Les syndicats combinent les données dans de nouvelles lignes. Si deux tables sont «unies» ensemble, les données de la première table sont 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.

2
VAHEED

N'oubliez pas que l'union fusionnera les résultats ( SQL Server pour en ê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
MonsterMagnet

Ussing UNION

UNION combine les résultats de deux requêtes ou plus dans un seul jeu de résultats incluant toutes les lignes appartenant à toutes les requêtes de l'union.

 UNION Exemple: 
 SELECT 121 AS [Colonne1], 221 AS [Colonne2] 
 UNION
SELECT 321 AS [Colonne1], 422 AS [Colonne2] 
 Sortie: 

 Column1 Column2 
 ------------------- 
 121 221 
 321 422 

Utiliser des JOINs

Les jointures, vous pouvez récupérer des données de deux ou plusieurs tables 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 

0
user6341745

1 . La clause SQL Joins est utilisée pour combiner les enregistrements de deux tables ou plus dans une base de données. Une jointure est un moyen de combiner des champs de deux tables en utilisant des valeurs communes à chacune. 

2 . L'opérateur SQL UNION combine le résultat de deux ou plusieurs instructions SELECT . Chaque instruction SELECT de l'UNION doit comporter 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/tableau 2 commandes

jointure interne:

SELECTION ID, NOM, MONTANT, DATE

DE CLIENTS

INNER JOIN COMMANDES

ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID; 

syndicat:

SELECTION ID, NOM, MONTANT, DATE

DE CLIENTS

JOINDRE GAUCHE COMMANDES

ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID 

SYNDICAT 

SELECTIONNER ID, NOM, MONTANT, DATE DE CLIENTS

DROIT JOINDRE LES COMMANDES

ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID; 

0
ian