Jak fungují full outer join, inner join, left join a right join v SQL Server 2014

Už jsem si o tom jednou zjišťoval informace, ale protože jsem to pak nepoužil, a víckrát jsem toto nutně nepotřeboval, zapomněl jsem jak se to používá a jiné informace o tomto. Velmi mi dnes pomohlo na základní pochopení tento obrázek, který jsem našel na stackoverflow: 1UKp7 Pak jsem si vytvořil v SQL Server Management Studio tyto 2 tabulky: Tabulka Albums:
Tabulka Albums
  Tabulka Photos:
Tabulka Photos
  A teď výsledky a popisy jednotlivých funkcí sql join: Full Outer Join: Full Outer Join slouží k tomu, pokud chcete získat všechna data tabulek seskupenou podle jejich klíče, jehož specifikace se nachází v klazuli on na konci SQL dotazu. Takže tento příkaz:

SQL
use MSSQLLearn;
select * from Albums a full outer join Photo p on a.IDAlbum = p.IDAlbum;

Výsledek tohoto příkazu vidíte zde:
full outer join
Později si ukážeme jak získat jen konkrétní sloupce. Inner Join: Toto je patrně to co ve většině případů budete potřebovat. Jednoduše řečeno – vrátí vám jen ty řádky z tabulek, které mají stejný klíč. Napsal jsem si takový SQL příkaz:

SQL
use MSSQLLearn;
select * from Albums a inner join Photo p on a.IDAlbum = p.IDAlbum;


inner join
Left Join: Tabulku kterou určím za left join nemusí mít tu hodnotu kterou mám v klazuli on. Takové hodnoty neexistujícího sloupce tabulky se pak nahradí NULL. Takže jednoduchá pomůcka pro rozlišení kdy dát left a kdy right join – left pokud chcete mít všechny řádky z hlavní tabulky, tedy z té kterou specifikujete za slovem from. Right pokud chcete mít všechny řádky z tabulky, kterou specifikujete za klíčovým slovem join:

SQL
use MSSQLLearn;
select * from Albums a left join Photo p on a.IDAlbum = p.IDAlbum;


left join
Right Join: Je to analogické s left join – akorát naopak. To znamená že budou vypsány všechny řádky ze tabulky specifikované za join a řádky které nebudou mít shodný klíč v tabulce za from budou mít ve sloupcích null.

SQL
use MSSQLLearn;
select * from Albums a right join Photo p on a.IDAlbum = p.IDAlbum;


right join
Libovolný Join s určením vrácených sloupců libovolné tabulky Na konec to slíbené. Není to žádná věda a určitě tohle bude nošení dříví do lesa, jen chci ukázat že to skutečně funguje:

SQL
use MSSQLLearn;
select a.Name, p.Name from Albums a left join Photo p on a.IDAlbum = p.IDAlbum;


left join s urcenim sloupcu

Napsat komentář