Respostas:
UNION
coloca linhas de consultas uma após a outra, enquanto cria JOIN
um produto cartesiano e o subconta - operações completamente diferentes. Exemplo trivial de UNION
:
mysql> SELECT 23 AS bah
-> UNION
-> SELECT 45 AS bah;
+-----+
| bah |
+-----+
| 23 |
| 45 |
+-----+
2 rows in set (0.00 sec)
exemplo trivial semelhante 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
e como posso realizá-lo no SQL padrão? Maria DB tem um comando union join
, mas outros bancos de dados não. Obrigado.
Uniões e uniões podem ser usadas para combinar dados de uma ou mais tabelas. A diferença está na forma como os dados são combinados.
Em termos simples, as junções combinam dados em novas colunas . Se duas tabelas forem unidas, os dados da primeira tabela serão mostrados em um conjunto de colunas ao lado da coluna da segunda tabela na mesma linha.
Os sindicatos combinam dados em novas linhas. Se duas tabelas forem "unidas" juntas, os dados da primeira tabela estarão em um conjunto de linhas e os dados da segunda tabela em outro conjunto. As linhas estão no mesmo resultado.
Aqui está uma representação visual de uma junção. As colunas da tabela A e B são combinadas em um único resultado.
Cada linha no resultado contém colunas das AMBAS tabelas A e B. As linhas são criadas quando as colunas de uma tabela correspondem às colunas de outra. Essa correspondência é chamada de condição de junção.
Isso torna as junções realmente ótimas para procurar valores e incluí-los nos resultados. Geralmente, isso é resultado da desnormalização (reversão da normalização) e envolve o uso da chave estrangeira em uma tabela para procurar valores de coluna usando a chave primária em outra.
Agora compare a representação acima com a de uma união. Em uma união, cada linha do resultado é de uma tabela OU da outra. Em uma união, as colunas não são combinadas para criar resultados, as linhas são combinadas.
Uniões e uniões podem ser usadas para combinar dados de uma ou mais tabelas em um único resultado. Ambos fazem isso de maneiras diferentes. Enquanto uma junção é usada para combinar colunas de diferentes tabelas, a união é usada para combinar linhas.
UNION combina os resultados de duas ou mais consultas em um único conjunto de resultados que inclui todas as linhas que pertencem a todas as consultas na união.
Usando JOINs , você pode recuperar dados de duas ou mais tabelas com base em relacionamentos lógicos entre as tabelas. Associações indicam como o SQL deve usar dados de uma tabela para selecionar as linhas em outra tabela.
A operação UNION é diferente de usar JOINs que combinam colunas de duas tabelas.
Exemplo UNION:
SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]
Resultado:
Column1 Column2
-------------------
1 2
3 4
Exemplo de JOIN:
SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId
Isso produzirá todas as linhas de ambas as tabelas para as quais a condição a.Id = b.AFKId
é verdadeira.
Você pode ver as mesmas explicações esquemáticas para ambas, mas são totalmente confusas.
Pela UNIÃO:
Para JOIN:
Uma junção é usada para exibir colunas com nomes iguais ou diferentes de tabelas diferentes. A saída exibida terá todas as colunas mostradas individualmente. Ou seja, as colunas serão alinhadas uma ao lado da outra.
O operador de conjunto UNION é usado para combinar dados de duas tabelas que possuem colunas com o mesmo tipo de dados. Quando uma UNION é executada, os dados de ambas as tabelas serão coletados em uma única coluna com o mesmo tipo de dados.
Por exemplo:
Veja as duas tabelas mostradas abaixo:
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
Agora, para executar um tipo JOIN, a consulta é mostrada abaixo.
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
Isso é uma junção.
UNION significa que você precisa criar tabelas ou conjunto de resultados com a mesma quantidade e tipo de colunas e adicioná-lo a tabelas / conjuntos de resultados juntos. Veja este exemplo:
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
São coisas completamente diferentes.
Uma junção permite relacionar dados semelhantes em tabelas diferentes.
Uma união retorna os resultados de duas consultas diferentes como um único conjunto de registros.
Uniões e uniões podem ser usadas para combinar dados de uma ou mais tabelas. A diferença está na forma como os dados são combinados.
Em termos simples, as junções combinam dados em novas colunas. Se duas tabelas forem unidas, os dados da primeira tabela serão mostrados em um conjunto de colunas ao lado da coluna da segunda tabela na mesma linha.
Os sindicatos combinam dados em novas linhas. Se duas tabelas forem "unidas" juntas, os dados da primeira tabela estarão em um conjunto de linhas e os dados da segunda tabela em outro conjunto. As linhas estão no mesmo resultado.
Lembre-se de que a união mesclará resultados ( SQL Server, com certeza) (recurso ou bug?)
select 1 as id, 3 as value
union
select 1 as id, 3 as value
id, valor
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, valor, id, valor
1,3,1,3
1. A cláusula SQL Joins é usada para combinar registros de duas ou mais tabelas em um banco de dados. Um JOIN é um meio de combinar campos de duas tabelas usando valores comuns a cada um.
2. O operador SQL UNION combina o resultado de duas ou mais instruções SELECT. Cada instrução SELECT dentro do UNION deve ter o mesmo número de colunas. As colunas também devem ter tipos de dados semelhantes. Além disso, as colunas em cada instrução SELECT devem estar na mesma ordem.
por exemplo: tabela 1 clientes / tabela 2 pedidos
junção interna:
SELECIONE ID, NOME, VALOR, DATA
DE CLIENTES
INNER JUNTAR PEDIDOS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
União:
SELECIONE ID, NOME, VALOR, DATA
DE CLIENTES
ORDENS DE JUNTA ESQUERDA
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
UNIÃO
SELECIONAR ID, NOME, VALOR, DATA DOS CLIENTES
ENCOMENDAR DIREITOS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Utilizando UNION
UNION é combina os resultados de duas ou mais consultas em um único conjunto de resultados que inclui todas as linhas que pertencem a todas as consultas na união.
Exemplo UNION: SELECIONE 121 AS [Coluna1], 221 AS [Coluna2] UNIÃO SELECIONE 321 AS [Coluna1], 422 AS [Coluna2]
Resultado: Coluna1 Coluna2 ------------------- 121 221 321 422
Usando JOINs
JOINs, você pode recuperar dados de duas ou mais tabelas com base em relacionamentos lógicos entre as tabelas.
Exemplo de JOIN: SELECT a.Column1, b.Column2 FROM TblA a INNER JOIN TblB b ON a.Id = b.id
Em resumo, eles são semelhantes, pois duas tabelas ou conjuntos de resultados estão sendo combinados, mas UNION é realmente para combinar conjuntos de resultados com o MESMO NÚMERO DE COLUNAS com as COLUNAS QUE TÊM TIPOS DE DADOS SIMILARES. A estrutura é a mesma, apenas novas linhas estão sendo adicionadas.
Nas junções, você pode combinar tabelas / conjuntos de resultados com qualquer estrutura possível, incluindo uma junção cartesiana onde NÃO há colunas compartilhadas / similares.
Eu gosto de pensar na diferença geral como sendo: