Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

CROSS JOIN vs INNER JOIN en SQL

Voici le meilleur exemple de Cross Join et Inner Join.

Considérez les tableaux suivants

TABLE :Teacher

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

TABLE :Student

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

1. JOINT INTERNE

La jointure interne sélectionne les lignes qui satisfont à la fois la table .

Considérez que nous devons trouver les enseignants qui sont les enseignants de la classe et leurs élèves correspondants. Dans cette condition, nous devons appliquer JOIN ou INNER JOIN et va

Requête

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

Résultat

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

2. JOINT CROISÉ

La jointure croisée sélectionne toutes les lignes de la première table et toutes les lignes de la deuxième table et s'affiche sous forme de produit cartésien, c'est-à-dire avec toutes les possibilités

Considérant que nous devons trouver tous les enseignants de l'école et les élèves, quels que soient les enseignants de la classe, nous devons appliquer CROSS JOIN .

Requête

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

Résultat

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