Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

CROSS JOIN vs INNER JOIN em SQL


Aqui está o melhor exemplo de Cross Join e Inner Join.

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. INNER JOIN


Inner join seleciona as linhas que satisfazem tanto a tabela .

Considere que precisamos encontrar os professores que são professores de classe e seus alunos correspondentes. Nessa condição, precisamos aplicar JOIN ou INNER JOIN e vontade



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

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

2. CROSS JOIN


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 .



Consulta
SELECT T.TchrId,T.TeacherName,S.StudentName 
FROM #Teacher T
CROSS JOIN #Student S 
  • FIDDLE SQL

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