sql >> Databáze >  >> RDS >> Sqlserver

CROSS JOIN vs INNER JOIN v SQL

Zde je nejlepší příklad Cross Join a Inner Join.

Zvažte následující tabulky

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. VNITŘNÍ SPOJENÍ

Vnitřní spojení vybere řádky, které splňují obě tabulky .

Zvažte, že musíme najít učitele, kteří jsou třídními učiteli, a jejich odpovídající studenty. V tomto stavu musíme použít JOIN nebo INNER JOIN a bude

Dotaz

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

Výsledek

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

2. KŘÍŽOVÉ PŘIPOJENÍ

Křížové spojení vybere všechny řádky z první tabulky a všechny řádky z druhé tabulky a zobrazí se jako kartézský součin, tj. se všemi možnostmi

Vzhledem k tomu, že potřebujeme najít všechny učitele ve škole a studenty bez ohledu na třídní učitele, musíme použít CROSS JOIN .

Dotaz

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

Výsledek

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


  1. Nelze vytvořit instanci poskytovatele OLE DB Microsoft.Jet.OLEDB.4.0 pro propojený server null

  2. Dotaz Oracle k načtení názvů sloupců

  3. Vkládání dat pomocí mysqli

  4. Jak odstraním všechny duplicitní záznamy v tabulce MySQL bez dočasných tabulek