JOINS v SQL Server: Kurz s příklady
Pomocí příkazu JOIN můžeme načíst data z více než jedné tabulky. Na SQL serveru jsou hlavně 4 různé typy JOINS. Naučíme se všechny JOINS in sqlserver s příklady:
- INNER JOIN/jednoduché spojení
- LEFT OUTER JOIN/LEFT JOIN
- PRAVÉ VNĚJŠÍ SPOJENÍ/PRAVÉ SPOJENÍ
- ÚPLNÉ VNĚJŠÍ PŘIPOJENÍ
INNER JOIN
Tento typ SQL serveru JOIN vrací řádky ze všech tabulek, ve kterých je podmínka spojení pravdivá. Vyžaduje následující syntaxi:
SELECT columns FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
K tomu použijeme následující dvě tabulky:
Tabulka studentů:
Tabulka poplatků:
Následující příkaz demonstruje INNER JOIN na SQL serveru s příkladem:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students INNER JOIN Fee ON Students.admission = Fee.admission
Příkaz vrátí následující:
Můžeme říct studentům, kteří zaplatili svůj poplatek. Použili jsme sloupec se společnými hodnotami v obou tabulkách, což je sloupec přijetí.
LEVÁ VNĚJŠÍ SPOJENÍ
Tento typ spojení vrátí všechny řádky z levé tabulky plus záznamy v pravé tabulce se shodnými hodnotami. Například:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students LEFT OUTER JOIN Fee ON Students.admission = Fee.admission
Kód vrátí následující:
Záznamy bez odpovídajících hodnot jsou v příslušných sloupcích nahrazeny hodnotami NULL.
PRAVÝ VNĚJŠÍ SPOJ
Tento typ spojení vrátí všechny řádky z tabulky napravo a pouze ty, které mají odpovídající hodnoty v tabulce nalevo. Například:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students RIGHT OUTER JOIN Fee ON Students.admission = Fee.admission
Příkaz pro OUTER JOINS SQL server vrací následující:
Důvodem výše uvedeného výstupu je, že všechny řádky v tabulce Poplatek jsou dostupné v tabulce Studenti, když jsou spárovány ve sloupci přijetí.
ÚPLNÉ VNĚJŠÍ PŘIPOJENÍ
Tento typ spojení vrátí všechny řádky z obou tabulek s hodnotami NULL, kde podmínka JOIN není pravdivá. Například:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students FULL OUTER JOIN Fee ON Students.admission = Fee.admission
Kód vrátí následující výsledek pro dotazy FULL OUTER JOINS SQL: