CROSS JOIN vs INNER JOIN no SQL


150

Qual é a diferença entre CROSS JOINe INNER JOIN?

JUNÇÃO CRUZADA:

SELECT 
    Movies.CustomerID, Movies.Movie, Customers.Age, 
    Customers.Gender, Customers.[Education Level], 
    Customers.[Internet Connection], Customers.[Marital Status], 
FROM   
    Customers 
CROSS JOIN 
    Movies

JUNÇÃO INTERNA:

SELECT 
    Movies.CustomerID, Movies.Movie, Customers.Age, 
    Customers.Gender, Customers.[Education Level], 
    Customers.[Internet Connection], Customers.[Marital Status]
FROM   
    Customers 
INNER JOIN 
    Movies ON Customers.CustomerID = Movies.CustomerID

Qual é o melhor e por que eu usaria um?


15
CROSS JOINresultará em todas as combinações possíveis das tabelas. por exemplo, Tabela1 com 100 linhas e Tabela2 com 100 linhas resultará em 10000 registros.
Bummi

x CROSS JOIN yisx INNER JOIN y ON 1=1
philipxy

Respostas:


119

A junção cruzada não combina as linhas; se você tiver 100 linhas em cada tabela com 1 a 1 correspondência, obtém 10.000 resultados; o Innerjoin retornará apenas 100 linhas na mesma situação.

Estes 2 exemplos retornarão o mesmo resultado:

Junção cruzada

select * from table1 cross join table2 where table1.id = table2.fk_id

Junção interna

select * from table1 join table2 on table1.id = table2.fk_id

Use o último método


7
E eu acredito que você pode escrever select * from table1 cross join table2 where table1.id = table2.fk_idcomo select * from table1, table2 where table1.id = table2.fk_id(substituindo cross joincom um ,)
modulitos

5
@ Lucas, que é a sintaxe antiga de junções, mas funcionará. Eu recomendo a versão de Clausen, porém, muito mais legível.
Iliketocode 29/07/16

1
o que você quer dizer com 1 a 1 correspondência? O que você quer dizer com "mesma situação"
Jwan622

1
@iliketocode "sintaxe antiga para junções" não está clara, é melhor falar sobre os padrões SQL-89 e SQL-92
Ivanzinho

Seu INNER JOIN "100" é um caso especial que você não explicou e não explicou o caso geral.
philipxy

186

Aqui está o melhor exemplo de junção cruzada e junção interna.

Considere as seguintes tabelas

TABELA : Teacher

x------------------------x
| TchrId   | TeacherName | 
x----------|-------------x
|    T1    |    Mary     |
|    T2    |    Jim      |
x------------------------x

TABELA : Student

x--------------------------------------x
|  StudId  |    TchrId   | StudentName | 
x----------|-------------|-------------x            
|    S1    |     T1      |    Vineeth  |
|    S2    |     T1      |    Unni     |
x--------------------------------------x

1. INSCRIÇÃO INTERNA

Junção interna seleciona as linhas que satisfazem a tabela .

Considere que precisamos encontrar os professores que são professores e seus alunos correspondentes. Nessa condição, precisamos aplicar JOINou INNER JOINe

insira a descrição da imagem aqui

Inquerir

SELECT T.TchrId,T.TeacherName,S.StudentName 
FROM #Teacher T
INNER JOIN #Student S ON T.TchrId = S.TchrId

Resultado

x--------------------------------------x
|  TchrId  | TeacherName | StudentName | 
x----------|-------------|-------------x            
|    T1    |     Mary    |    Vineeth  |
|    T1    |     Mary    |    Unni     |
x--------------------------------------x

2. JUNÇÃO TRANSVERSAL

A junção cruzada seleciona todas as linhas da primeira tabela e todas as linhas da segunda tabela e mostra como produto cartesiano, ou seja, com todas as possibilidades

Considere que precisamos encontrar todos os professores da escola e alunos, independentemente dos professores da turma, precisamos aplicar CROSS JOIN.

insira a descrição da imagem aqui

Inquerir

SELECT T.TchrId,T.TeacherName,S.StudentName 
FROM #Teacher T
CROSS JOIN #Student S 

Resultado

x--------------------------------------x
|  TchrId  | TeacherName | StudentName | 
x----------|-------------|-------------x            
|    T2    |     Jim     |    Vineeth  |
|    T2    |     Jim     |    Unni     |
|    T1    |     Mary    |    Vineeth  |
|    T1    |     Mary    |    Unni     |
x--------------------------------------x

1
A chave da Figura 2 é complexa: envolve elementos (irrelevantes) de um argumento de CROSS JOIN e um número (valor irrelevante) é uma linha dele e uma linha (irrelevante) é uma linha de resultado. Para tabelas como malas, não é um diagrama de Venn: para linhas como valores, está errado ; para linhas como elementos que não podem ser compartilhados. Para tabelas como conjuntos, você não precisa de um diagrama de Venn. A Figura 1 é uma terrível tentativa comum de explicar JOIN. Sua chave também é complexa: é apenas para tabelas como conjuntos e apenas equijoin e apenas um valor; também representa a entrada de maneira diferente da saída. Escreve -lo para Cadastre-se em geral.
philipxy

A Figura 1 é útil e correta como a primeira das 4 cores dos diagramas de Venn do círculo que se cruzam para: (INTERNA) JOIN vs ESQUERDA, DIREITA & CHEIA (EXTERNA), mas não vs CROSS JOIN. Linhas de interseção estão em JOIN, linhas esquerda / direita são linhas extras (estendidas por nulo) em ESQUERDA / DIREITA JOIN. Ele inclui CROSS JOIN como um caso especial de (interior) ADERIR onde não existem linhas na não-intersecção.
philipxy

1
Obrigado por sua sugestão. De qualquer forma, o OP pediu a diferença entre essas duas junções. Respondi a essa pergunta de maneira que qualquer iniciante possa entender facilmente a diferença entre eles. Como você disse, não forneci chaves como em um ambiente de produção. É apenas um exemplo para entender facilmente. E para Cross Join, você acha que ele não retorna todas as linhas, a menos que uma Wherecláusula seja fornecida? De seus comentários, há mais chances de um iniciante ficar confuso !!! @philipxy
Sarath Avanavu 30/11/2015

1
Meus comentários apontam que os diagramas são difíceis de interpretar, mesmo que se saiba o que eles estão tentando dizer e sejam inadequados para este tópico. Por "chave" (da Figura 2 ou 1), eu quis dizer "explicação do significado das partes de um diagrama". Por "escreva", quero dizer que tente escrever muito claramente o que as partes do diagrama significam. Você verá que os diagramas são complicados e não demonstram junção cruzada versus junção interna! Ou seja, eles não pertencem à sua resposta. As chaves relacionais da tabela PS não têm nenhum papel em explicar o que os JOINs fazem. PPS A única diferença entre as junções é INNER JOIN com ON.
philipxy

Veja em W3Schools w3schools.com/sql/sql_join_inner.asp onde eles deram um tipo semelhante de diagrama para INNER JOIN. Certifique-se de que você está certo antes de fazer comentários @philipxy
Sarath Avanavu

69

CROSS JOIN = (INTERNO) JOIN = vírgula (",")

TL; DR A única diferença entre SQL CROSS JOIN, (INNER) JOIN e vírgula (",") (além de vírgula ter menor precedência para a ordem de avaliação) é que (INNER) JOIN tem ON enquanto CROSS JOIN e vírgula não.


Re produtos intermediários

Todos os três produzem um produto "Cartesiano" relacional conceitual intermediário no estilo SQL, também conhecido como junção cruzada, de todas as combinações possíveis de uma linha de cada tabela. É ON e / ou WHERE que reduz o número de linhas. SQL Fiddle

O padrão SQL define <comma> via produto (7.5 1.b.ii), <junção cruzada> via <comma> (7.7 1.a) e JOIN ON <condição de pesquisa> via <comma> mais WHERE (7.7 1.b )

Como a Wikipedia coloca:

Junção cruzada

CROSS JOIN retorna o produto cartesiano de linhas das tabelas na junção. Em outras palavras, ele produzirá linhas que combinam cada linha da primeira tabela com cada linha da segunda tabela.

Junção interna

[...] O resultado da junção pode ser definido como o resultado de obter primeiro o produto cartesiano (ou junção cruzada) de todos os registros das tabelas (combinando todos os registros da tabela A com todos os registros da tabela B) e depois retornar todos os registros que satisfazem o predicado de junção.

A "notação de associação implícita" simplesmente lista as tabelas para associação, na cláusula FROM da instrução SELECT, usando vírgulas para separá-las. Assim, especifica uma junção cruzada

Re OUTER JOINs e usando ON vs WHERE neles, consulte Condições em LEFT JOIN (OUTER JOIN) vs INNER JOIN .

Por que comparar colunas entre tabelas?

Quando não há linhas duplicadas:

Toda tabela contém as linhas que fazem uma afirmação verdadeira a partir de um determinado modelo de instrução preencher em branco. (Faz uma verdadeira proposição de-- satisfaz --a certo predicado (característica) .)

  • Uma tabela base mantém as linhas que fazem uma declaração verdadeira de algum modelo de declaração fornecido pelo DBA:

    /* rows where
    customer C.CustomerID has age C.Age and ...
    */
    FROM Customers C
  • O produto intermediário de uma junção mantém as linhas que fazem uma declaração verdadeira do AND dos modelos de seus operandos:

    /* rows where
        customer C.CustomerID has age C.Age and ...
    AND movie M.Movie is rented by customer M.CustomerID and ...
    */
    FROM Customers C CROSS JOIN Movies M
  • As condições ON e ON são ANDed para fornecer um modelo adicional. O valor são novamente as linhas que satisfazem esse modelo:

    /* rows where
        customer C.CustomerID has age C.Age and ...
    AND movie M.Movie is rented by customer M.CustomerID and ...
    AND C.CustomerID = M.CustomerID
    AND C.Age >= M.[Minimum Age]
    AND C.Age = 18
    */
    FROM Customers C INNER JOIN Movies M
    ON C.CustomerID = M.CustomerID
    AND C.Age >= M.[Minimum Age]
    WHERE C.Age = 18

Em particular, comparar colunas para igualdade (SQL) entre tabelas significa que as linhas mantidas do produto nas partes do modelo das tabelas unidas têm o mesmo valor (não NULL) para essas colunas. É apenas coincidência que muitas linhas são normalmente removidas por comparações de igualdade entre tabelas - o que é necessário e suficiente é caracterizar as linhas que você deseja.

Basta escrever SQL para o modelo para as linhas que você deseja!

Sobre o significado de consultas (e tabelas x condições), consulte:
Como obter dados correspondentes de outra tabela SQL para duas colunas diferentes: Junção interna e / ou União?
Existe alguma regra prática para construir a consulta SQL a partir de uma descrição legível por humanos?

Sobrecarregando "junção cruzada"

Infelizmente, o termo "junção cruzada" é usado para:

  • O produto intermediário.
  • JUNÇÃO TRANSVERSAL.
  • (INNER) JOIN com ON ou WHERE que não compara nenhuma coluna de uma tabela a nenhuma coluna de outra. (Como isso tende a retornar muitas das linhas intermediárias do produto.)

Esses vários significados são confundidos. (Por exemplo, como em outras respostas e comentários aqui.)

Usando CROSS JOIN vs (INNER) JOIN vs vírgula

A convenção comum é:

  • Use CROSS JOIN quando e somente quando você não comparar colunas entre tabelas. Isso é para mostrar que a falta de comparações foi intencional.
  • Use (INNER) JOIN com ON quando e somente quando comparar colunas entre tabelas. (Além disso, possivelmente outras condições.)
  • Não use vírgula.

Normalmente, também as condições que não estão em pares de tabelas são mantidas por um WHERE. Mas eles podem ter que ser inseridos em um (n INNER) JOIN ON para obter linhas apropriadas para o argumento de um DIREITO, ESQUERDO ou CHEIO (EXTERNO).

Re "Não use vírgula" A mistura de vírgula com JOIN explícita pode enganar, pois a vírgula tem menor precedência. Mas, dado o papel do produto intermediário no significado de CROSS JOIN, (INNER) JOIN e vírgula, os argumentos para a convenção acima de não usá-lo são instáveis. Uma junção cruzada ou vírgula é como uma junção (interna) que está em uma condição VERDADEIRA. Um produto intermediário, ON e WHERE, todos introduzem um AND no predicado correspondente. Entretanto, pode-se pensar em INNER JOIN ON - digamos, gerando uma linha de saída apenas ao encontrar um par de linhas de entrada que satisfaça a condição ON - mas, no entanto, retorna as linhas de junção cruzada que satisfazem a condição. A única razão pela qual o ON teve que suplementar vírgula no SQL foi escrever OUTERJOINs. Obviamente, uma expressão deve tornar seu significado claro; mas o que está claro depende do significado das coisas.

Diagramas de Re Venn Um diagrama de Venn com dois círculos que se cruzam pode ilustrar a diferença entre as linhas de saída para JUNÇÕES INTERNA, ESQUERDA, DIREITA e CHEIA para a mesma entrada. E quando o ON é incondicionalmente VERDADEIRO, o resultado INNER JOIN é o mesmo que CROSS JOIN. Também pode ilustrar as linhas de entrada e saída para INTERSECT, UNION & EXCEPT. E quando ambas as entradas têm as mesmas colunas, o resultado INTERSECT é o mesmo que para o SQL NATURAL JOIN padrão e o resultado EXCEPT é o mesmo que para certos idiomas que envolvem LEFT & RIGHT JOIN. Mas não ilustra como (INNER) JOIN funciona em geral. Isso parece plausível à primeira vista . Pode identificar casos especiais de peças da entrada e / ou saída parade ON, PKs (chaves primárias), FKs (chaves estrangeiras) e / ou SELECT. Tudo o que você precisa fazer é identificar quais são exatamente os elementos dos conjuntos representados pelos círculos . (Que confusa apresentações não deixam claro.) (Lembre-se que, em geral, para a junta linhas de saída têm diferentes rubricas de linhas de entrada . Mesas e SQL são sacos não conjuntos de linhas com nulos .)


6
+1 I como esta resposta melhor - os outros parecem implicar que os resultados serão diferentes, mas se o "ON" cláusula é substituído por "onde" os resultados são os mesmos
Ronnie

4
+1 Obrigado por esclarecer que omitindo a cláusula ON em um INNER JOIN irá produzir os mesmos resultados como utilizar a CROSS JOIN
Cerno

"produto cruzado cartesiano conceitual intermediário no estilo SQL" - é outra maneira de dizer: "não é realmente um conjunto de pares ordenados, mas não posso evitar dizer 'produto cartesiano'"? :) Como não-matemático, o único contexto em que eu já encontrei o termo 'produto cartesiano' é quando alguém está explicando o SQL CROSS JOIN. Eu me pergunto quantas vezes alguém chega ao SQL já familiarizado com o produto cartesiano, mas incapaz de descobrir CROSS JOIN.
precisa saber é o seguinte

1
@onedaywhen O produto cartesiano do operador retorna um conjunto de tuplas ordenadas, com base em alguns conjuntos. O resultado é um produto cartesiano. Infelizmente, as culturas relacionais e SQL mal usam / sobrecarregam o "produto cartesiano" para operadores que evocam, mas não são produtos cartesianos. Por exemplo, Wikipedia! Eu me oponho a isso - apenas engana / confunde. No entanto, aqui, infelizmente, descrevo apenas como a junção cruzada SQL funciona com minhas próprias palavras e adoro a Wikipedia. I rotular o resultado "conceitual de estilo SQL produto cruzado cartesiana intermediário". Sim "Cartesiano" é para aqueles que já estão corrompidos e que o usam / esperam.
precisa saber é

1
Esta é a resposta certa, ao contrário das respostas de classificação mais alta. É típico do SQL que explicações superficiais, com um som razoável e bem formatado, com imagens, dominem o conteúdo educacional, apesar de não entenderem nem definirem nem mesmo o básico da linguagem.
Charles Roddie

23

Junção interna

A junção que exibe apenas as linhas que têm uma correspondência nas duas tabelas unidas é conhecida como junção interna. Essa é a junção padrão na consulta e visualize o Designer.

Sintaxe para junção interna

SELECT t1.column_name,t2.column_name
FROM table_name1 t1
INNER JOIN table_name2 t2
ON t1.column_name=t2.column_name

Junção cruzada

Uma junção cruzada que produz o produto cartesiano das tabelas envolvidas na junção. O tamanho de um produto cartesiano é o número de linhas na primeira tabela multiplicado pelo número de linhas na segunda tabela.

Sintaxe para junção cruzada

SELECT * FROM table_name1
CROSS JOIN table_name2

Ou podemos escrever de outra maneira também

SELECT * FROM table_name1,table_name2

Agora verifique a consulta abaixo para junção cruzada

Exemplo

SELECT * FROM UserDetails
CROSS JOIN OrderDetails

Ou

SELECT * FROM UserDetails, OrderDetails


8

CROSS JOIN

Como expliquei neste artigo , o CROSS JOIN visa gerar um produto cartesiano.

Um Produto Cartesiano pega dois conjuntos A e B e gera todas as permutações possíveis de registros de pares a partir de dois conjuntos de dados.

Por exemplo, supondo que você tenha as seguintes tabelas rankse suitsbanco de dados:

As tabelas de classificações e naipes

E o rankstem as seguintes linhas:

| name  | symbol | rank_value |
|-------|--------|------------|
| Ace   | A      | 14         |
| King  | K      | 13         |
| Queen | Q      | 12         |
| Jack  | J      | 11         |
| Ten   | 10     | 10         |
| Nine  | 9      |  9         |

Enquanto a suitstabela contém os seguintes registros:

| name    | symbol |
|---------|--------|
| Club    |       |
| Diamond |       |
| Heart   |       |
| Spade   |       |

Como consulta CROSS JOIN, como a seguinte:

SELECT
   r.symbol AS card_rank,
   s.symbol AS card_suit
FROM
   ranks r
CROSS JOIN
   suits s

irá gerar todas as permutações possíveis de rankse suitespares:

| card_rank | card_suit |
|-----------|-----------|
| A         |          |
| A         |          |
| A         |          |
| A         |          |
| K         |          |
| K         |          |
| K         |          |
| K         |          |
| Q         |          |
| Q         |          |
| Q         |          |
| Q         |          |
| J         |          |
| J         |          |
| J         |          |
| J         |          |
| 10        |          |
| 10        |          |
| 10        |          |
| 10        |          |
| 9         |          |
| 9         |          |
| 9         |          |
| 9         |          |

JUNÇÃO INTERNA

Por outro lado, INNER JOIN não retorna o produto cartesiano dos dois conjuntos de dados de união.

Em vez disso, o INNER JOIN pega todos os elementos da tabela do lado esquerdo e os compara com os registros da tabela do lado direito, para que:

  • se nenhum registro for correspondido na tabela do lado direito, a linha do lado esquerdo será filtrada do conjunto de resultados
  • para qualquer registro correspondente na tabela do lado direito, a linha do lado esquerdo é repetida como se houvesse um produto cartesiano entre esse registro e todos os seus registros filhos associados na tabela do lado direito.

Por exemplo, supondo que tenhamos um relacionamento de tabela um para muitos entre as tabelas pai poste filho, post_commentcom a seguinte aparência:

Relação de tabela um para muitos

Agora, se a posttabela tiver os seguintes registros:

| id | title     |
|----|-----------|
| 1  | Java      |
| 2  | Hibernate |
| 3  | JPA       |

e a post_commentstabela possui estas linhas:

| id | review    | post_id |
|----|-----------|---------|
| 1  | Good      | 1       |
| 2  | Excellent | 1       |
| 3  | Awesome   | 2       |

Uma consulta INNER JOIN como a seguinte:

SELECT
   p.id AS post_id,
   p.title AS post_title,
   pc.review  AS review
FROM post p
INNER JOIN post_comment pc ON pc.post_id = p.id

incluirá todos os postregistros, juntamente com todos os seus associados post_comments:

| post_id | post_title | review    |
|---------|------------|-----------|
| 1       | Java       | Good      |
| 1       | Java       | Excellent |
| 2       | Hibernate  | Awesome   |

Basicamente, você pode pensar no INNER JOIN como um CROSS JOIN filtrado, onde apenas os registros correspondentes são mantidos no conjunto de resultados final.

Para mais detalhes sobre como o INNER JOIN funciona, consulte este artigo também.


"INNER JOIN não retorna o produto cartesiano dos dois conjuntos de dados de junção" é um pouco demais quando x INNER JOIN y em 1 = 1 o devolve. O mesmo acontece com "Em vez disso" quando o que você tenta dizer de fato (é claro) o devolve para a condição 1 = 1. Exceto que o idioma nos marcadores não descreve claramente o resultado de uma junção interna. O que a descreve é ​​que é uma junção cruzada com menos linhas que não atendem à condição. Da mesma forma, seu idioma de junção cruzada usando "combinações" não é claro.
philipxy

7

O SQL Server também aceita a notação mais simples de:

SELECT A.F, 
       B.G, 
       C.H 
  FROM TABLE_A A, 
       TABLE_B B, 
       TABLE_C C
 WHERE A.X = B.X 
   AND B.Y = C.Y

Usando essa notação mais simples, não é necessário se preocupar com a diferença entre junções internas e cruzadas. Em vez de duas cláusulas "ON", existe uma única cláusula "WHERE" que executa o trabalho. Se você tiver alguma dificuldade em descobrir quais cláusulas "JOIN" "ON" vão para onde, abandone a notação "JOIN" e use a mais simples acima.

Não é trapaça.


2

Ao escrever consultas usando junções internas, os registros serão buscados nas duas tabelas se a condição for satisfeita nas duas tabelas, ou seja, correspondência exata da coluna comum nas duas tabelas.

Ao escrever uma consulta usando junção cruzada, o resultado é como um produto cartesiano do número de registros nas duas tabelas. exemplo, se a tabela1 contiver 2 registros e a tabela2 contiver 3 registros, o resultado da consulta será 2 * 3 = 6 registros.

Portanto, não faça junções cruzadas até precisar disso.


2
Somente se a cláusula WHERE estiver ausente!
epitka

2

A junção cruzada e a junção interna são as mesmas, com a única diferença de que, na junção interna, filtramos booleanamente alguns dos resultados do produto cartesiano

table1
x--------------------------------------x
|  fieldA  |    fieldB   |    fieldC   | 
x----------|-------------|-------------x            
|    A     |      B      |    option1  |
|    A     |      B1     |    option2  |
x--------------------------------------x

table2
x--------------------------------------x
|  fieldA  |    fieldB   |    fieldC   | 
x----------|-------------|-------------x            
|    A     |      B      |    optionB1 |
|    A1    |      B1     |    optionB2 |
x--------------------------------------x

 cross join
  A,B,option1,A,B,optionB1
  A,B,option1,A1,B1,optionB2
  A,B1,option2,A,B,optionB1
  A,B1,option2,A1,B1,optionB2

 inner join on field1 (only with the value is the same in both tables)
  A,B,option1,A,B,optionB1
  A,B1,option2,A,B,optionB1

 inner join on field1
  A,B,option1,A,B,optionB1

É no design de nossos dados que decidimos que há apenas um caso do campo que estamos usando para a junção. Unir somente junção cruzada de ambas as tabelas e obter apenas as linhas que realizam expressão booleana especial.

Observe que, se os campos em que estamos fazendo nossas junções forem nulos nas duas tabelas, passaremos o filtro. Cabe a nós ou ao fabricante do banco de dados adicionar regras extras para evitar ou permitir nulos. Aderindo ao básico, é apenas uma junção cruzada seguida por um filtro.


0

A junção interna fornecerá o resultado de registros correspondentes entre duas tabelas, enquanto a junção cruzada fornece as combinações possíveis entre duas tabelas.


0

A = {1,5,3,4,6,7,9,8} B = {2,8,5,4,3,6,9}

cross join agir como produto cartesiano A ✖ B = {1,2}, {1,8} ..., {5,2}, {5,8}, {5,5} ..... {3,3} ..., {6,6} .... {8,9} e retornou esse longo conjunto de resultados ..

ao processar inner joino produto através do produto cartesiano e escolher pares correspondentes. Se achar que isso ordenou os pares como chaves primárias de duas tabelas e, na pesquisa de cláusulas por A = B, inner joinescolha {5,5}, {4,4}, {6,6} , {9,9} e retornou a coluna solicitada na cláusula select relacionada a esses IDs.

se cross joinem a = b, é o mesmo resultado definido como inner join. nesse caso, também use inner join.


-1

Depende da saída que você espera.

Uma junção cruzada corresponde a todas as linhas em uma tabela para todas as linhas em outra tabela. Uma junção interna corresponde a um campo ou campos. Se você tiver uma tabela com 10 linhas e outra com 10 linhas, as duas junções se comportarão de maneira diferente.

A junção cruzada terá 100 linhas retornadas e elas não serão relacionadas, exatamente o que é chamado de produto cartesiano. A junção interna corresponderá registros entre si. Supondo que um tenha uma chave primária e que seja uma chave estrangeira no outro, você receberá 10 linhas retornadas.

Uma junção cruzada tem utilidade geral limitada, mas existe para ser completa e descreve o resultado da junção de tabelas sem relações adicionadas à consulta. Você pode usar uma junção cruzada para fazer listas de combinações de palavras ou algo semelhante. Uma junção interna, por outro lado, é a junção mais comum.


Para não confundir todo mundo. Eu tentei encurtar a resposta. Esta é a melhor resposta curta possível.
Shrikant Jadhav
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.