Relační databáze jsou stabilní mnoha podniků. Jsou vytvořeny pomocí počítačového jazyka s názvem Structured Query Language (SQL). Pokud pracujete s relační databáze, budete příležitostně zkoumat nebo shromažďovat data, která jsou umístěna ve více než jedné tabulce databáze.
Co je příkaz SQL JOIN?
Příkaz SQL JOIN umožňuje spojit dvě nebo více tabulek, obvykle na základě souvisejícího sloupce, takže s daty se zachází, jako by se nacházely v jedné tabulce. Samotné tabulky se spojením nemění.
SQL JOIN je flexibilní a funkční. I když existuje několik typů spojení, vnitřní spojení je jedno z nejjednodušších k pochopení a použití. Podívejte se na následující příkazy SQL, které ilustrují, jak kombinovat výsledky ze tří různých tabulek pomocí vnitřního spojení.
Příklad vnitřního spojení
Například vezměte tabulky obsahující ovladače v jedné tabulce a utkání vozidel ve druhé. K vnitřnímu spojení dochází tam, kde se vozidlo i řidič nacházejí ve stejném městě. Vnitřní spojení vybere všechny řádky z obou tabulek, které obsahují shodu mezi sloupci umístění.
Níže uvedený příkaz SQL kombinuje data z tabulek Řidiči a vozidla v případech, kdy se řidič a vozidlo nacházejí ve stejném městě:
VYBRAT příjmení, jméno, značku
OD ŘIDIČŮ, vozidel
WHERE drivers.location = vehicles.location
Tento dotaz vytváří následující výsledky:
příjmení jméno křestní jméno
Baker Roland H122JM
Smythe Michael D824HA
Smythe Michael P091YF
Jacobs Abraham J291QR
Jacobs Abraham L990MT
Nyní rozšířte tento příklad tak, aby zahrnoval třetí tabulku. Chcete-li zahrnout pouze řidiče a vozidla přítomná na místech, která jsou otevřena o víkendu, přiveďte do dotazu třetí tabulku rozšířením příkazu JOIN následujícím způsobem:
VYBERTE příjmení, křestní jméno, značku, open_weekends
Z ŘIDIČŮ, vozidel, umístění
WHERE drivers.location = vehicles.location
AND vehicles.location = locations.location
AND locations.open_weekends = 'Ano'
Tento dotaz vytváří následující výsledky:
příjmení jméno křestní jméno open_weekends
Baker Roland H122JM ano
Jacobs Abraham J291QR ano
Jacobs Abraham L990MY ano
Toto výkonné rozšíření základního příkazu SQL JOIN kombinuje data komplexním způsobem. Kromě kombinování tabulek s vnitřním spojením tato technika kombinuje více tabulek s jinými typy spojení.
Další typy připojení
Když mají tabulky odpovídající záznam, vnitřní spojení jsou způsob, jak jít, ale někdy jedna tabulka nemá související záznam pro data, na kterých je spojení postaveno, takže dotaz selže. Tento případ vyžaduje vnější spojení, který zahrnuje výsledky, které existují v jedné tabulce, ale nemá odpovídající shodu v připojené tabulce.
Dále se můžete rozhodnout použít jiný typ spojení, v závislosti na okolnostech. Tyto další typy spojení jsou:
- Levý vnější spoj (left join): Obsahuje všechny záznamy z levé tabulky, i když pravá tabulka nemá odpovídající záznam.
- Pravý vnější spoj (right join): Vrátí všechny relevantní informace z pravé tabulky, i když levá tabulka nemá shodu.
- Úplné připojení: Vybere všechny záznamy ze dvou tabulek bez ohledu na to, zda mají odpovídající podmínku spojení.