Qual è la differenza tra JOIN e UNION?
Domanda
Qual è la differenza tra JOIN
E UNION
?Posso avere un esempio?
Soluzione
UNION
mette linee dalle query uno dopo l'altro, mentre JOIN
rende un prodotto cartesiano e sottoinsiemi che - completamente diverse operazioni. banale esempio di UNION
:
mysql> SELECT 23 AS bah
-> UNION
-> SELECT 45 AS bah;
+-----+
| bah |
+-----+
| 23 |
| 45 |
+-----+
2 rows in set (0.00 sec)
Analogamente esempio banale di 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)
Altri suggerimenti
UNION combina i risultati di due o più query in un unico set di risultati che include tutte le righe che appartengono a tutte le query dell'Unione.
si unisce , è possibile recuperare dati provenienti da due o più tabelle basate su relazioni logiche tra le tabelle. I join indicare come SQL dovrebbe utilizzare i dati da una tabella per selezionare le righe di un'altra tabella.
L'operazione UNION è diverso dall'utilizzo di join che combinano colonne di due tabelle.
UNION Esempio:
SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]
Output:
Column1 Column2
-------------------
1 2
3 4
JOIN Esempio:
SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId
Ciò produrrà tutte le righe di entrambe le tabelle per cui la condizione a.Id = b.AFKId
è vero.
I giunti e le unioni possono essere utilizzati per combinare dati provenienti da una o più tabelle. La differenza sta nel modo in cui i dati vengono combinati.
In termini semplici, unisce combinare i dati in nuove colonne . Se due tabelle sono uniti insieme, i dati della prima tabella viene fornita su una serie di colonna a fianco colonna della seconda tabella nella stessa riga.
organismi di combinare i dati in nuove righe. Se due tabelle sono “unioned” insieme, i dati della prima tabella è in un insieme di righe, ei dati della seconda tabella in un altro set . Le righe sono nello stesso risultato.
Qui è una rappresentazione visiva di un join. colonne di B Tabella A e sono combinati in un unico risultato.
Ogni riga del risultato contiene vengono create le colonne da entrambi tabelle A e B. Righe quando le colonne da una tabella coi colonne da altre. Questa partita è chiamata la condizione di join.
In questo modo si unisce veramente grande per cercare i valori e la loro inclusione nei risultati. Questo è solitamente il risultato di denormalizing (inversione normalizzazione) e coinvolge usando la chiave esterna in una tabella per cercare i valori di colonna utilizzando la chiave primaria in un altro.
Ora confrontare la rappresentazione di cui sopra con quella di un sindacato. In un'unione ogni riga all'interno del risultato è da una tabella o l'altro. In un'unione, colonne non sono combinate per creare i risultati, le righe vengono combinati.
Sia unisce e sindacati può essere utilizzato per combinare dati provenienti da una o più tabelle in un unico risultato. Entrambi vanno di questo è modi diversi. Mentre un join viene utilizzato per combinare le colonne di tabelle diverse, il sindacato viene utilizzato per combinare righe.
JOIN:
Un join è utilizzato per la visualizzazione di colonne con lo stesso o diversi nomi di tabelle diverse. L'output visualizzato avrà tutte le colonne indicate singolarmente. Questo è il colonne saranno allineati uno accanto all'altro.
UNION:
L'operatore impostato UNION viene utilizzato per combinare i dati da due tabelle che hanno colonne con lo stesso tipo di dati. Quando un UNION viene eseguita i dati da entrambe le tabelle saranno raccolti in una singola colonna avente lo stesso tipo di dati.
Ad esempio:
Si vedano le due tabelle riportate di seguito:
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
Ora, per l'esecuzione di un tipo di join della query è mostrato di seguito.
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
Questo è un join.
UNION significa che si deve alle tabelle o di risultati con il stessa quantità e il tipo di colonne e si aggiunge questo a tavoli / ResultSets insieme. Guarda questo esempio:
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
Sono cose completamente diverse.
Un uniscono permette di mettere in relazione i dati simili in diverse tabelle.
Un connubio restituisce i risultati di due query diverse in un unico set di record.
L'unione fa due query assomigliano uno. Unisce sono per l'esame due o più tabelle in un unico prospetto di query
I giunti e le unioni possono essere utilizzati per combinare dati provenienti da una o più tabelle. La differenza sta nel modo in cui i dati vengono combinati.
In termini semplici, si unisce combinare i dati in nuove colonne. Se due tabelle sono uniti insieme, i dati della prima tabella viene fornita su una serie di colonna a fianco colonna della seconda tabella nella stessa riga.
I sindacati si combinano i dati in nuove righe. Se due tabelle sono “unioned” insieme, quindi i dati dalla prima tabella è in un insieme di righe, ei dati dalla seconda tabella in un altro gruppo. Le righe sono nello stesso risultato.
Ricordate che l'unione si fondono risultati ( SQL Server per essere sicuri) (funzione o bug ?)
select 1 as id, 3 as value
union
select 1 as id, 3 as value
id, il valore
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, valore, id, il valore
1,3,1,3
1.La clausola SQL Joins viene utilizzata per combinare record di due o più tabelle in un database.Un JOIN è un mezzo per combinare i campi di due tabelle utilizzando valori comuni a ciascuna.
2.L'operatore SQL UNION combina il risultato di due o più istruzioni SELECT.Ciascuna istruzione SELECT all'interno dell'UNION deve avere lo stesso numero di colonne.Le colonne devono avere anche tipi di dati simili.Inoltre, le colonne in ciascuna istruzione SELECT devono essere nello stesso ordine.
Per esempio:tavolo 1 clienti/tavolo 2 ordini
unione interna:
SELEZIONA ID, NOME, IMPORTO, DATA
DAI CLIENTI
ORDINI DI JOIN INTERNI
ON CLIENTI.ID = ORDINI.CLIENTE_ID;
unione:
SELEZIONA ID, NOME, IMPORTO, DATA
DAI CLIENTI
SINISTRA UNISCI GLI ORDINI
ON CLIENTI.ID = ORDINI.CLIENTE_ID
UNIONE
Seleziona ID, nome, importo, data dai clienti
GIUSTO UNIRE GLI ORDINI
ON CLIENTI.ID = ORDINI.CLIENTE_ID;
Ussing UNION
UNION è combina i risultati di due o più query in un unico set di risultati che include tutte le righe che appartengono a tutte le query del sindacato.
UNION Example: SELECT 121 AS [Column1], 221 AS [Column2] UNION SELECT 321 AS [Column1], 422 AS [Column2]
Output: Column1 Column2 ------------------- 121 221 321 422
Ussing JOIN
Si unisce, è possibile recuperare i dati da due o più tabelle in base a relazioni logiche tra le tabelle.
JOIN Example: SELECT a.Column1, b.Column2 FROM TblA a INNER JOIN TblB b ON a.Id = b.id
In astratto, essi sono simili, dal fatto che due tabelle o gruppi di risultati vengono combinati, ma UNION è davvero per combinare insiemi di risultati con lo stesso numero di colonne con le colonne presentanti TIPI dati simili. La struttura è si aggiungono gli stessi, solo nuove righe.
Nel unisce, è possibile combinare tabelle / set di risultati con qualsiasi possibile struttura, tra cui un join cartesiano dove non ci sono condivisi / colonne simili.
Union Il funzionamento è risultato del verticale combinato aggregato delle righe, Unione funzionamento è risultato combinato della Orizzontale Complessivo delle colonne.
Mi piace pensare alla differenza generale essere:
- ENTRA unire le tabelle
- UNION (et tutti) combina le query.