SQL INNER JOIN (Čeština)

Souhrn: v tomto kurzu se naučíte, jak dotazovat data z více tabulek pomocí příkazu SQL INNER JOIN.

V předchozím kurzu jste se naučili dotazovat se na data z jedné tabulky pomocí příkazu SELECT. Často však chcete dotazovat data z více tabulek, abyste měli k dispozici kompletní sadu výsledků pro analýzu. K dotazování na data z více tabulek používáte příkazy join.

SQL poskytuje několik typů spojení, jako je vnitřní spojení, vnější spojení (levé vnější spojení nebo levé spojení, pravé vnější spojení nebo pravé spojení a úplné vnější spojení ) a připojte se. V tomto kurzu vám ukážeme, jak používat klauzuli INNER JOIN.

Syntaxe SQL INNER JOIN

Následující příklad ukazuje INNER JOIN syntaxe pro spojení dvou tabulek:

1
2
3
4
5

SELECT
column1, column2
FROM
table_1
INNER JOIN table_2 ON join_condition;

Podívejme se podrobněji na výše uvedenou syntaxi:

  • table_1 a table_2 se nazývají spojené tabulky.
  • Pro každý řádek v table_1 vyhledá dotaz odpovídající řádek v table_2, který splňuje podmínku spojení. Pokud byl nalezen odpovídající řádek, vrátí dotaz řádek, který obsahuje data z obou tabulek. Jinak prozkoumá další řádek v table_1 a tento proces pokračuje, dokud nebudou prozkoumány všechny řádky v table_1.

Pro připojení více než dvou tabulek byla použita stejná logika.

Příklady SQL INNER JOIN

SQL INNER JOIN – dotazování na data ze dvou tabulek příklad

V tomto příkladu použijeme v ukázkové databázi tabulky products a categories. Následující obrázek ilustruje databázový diagram.

Ve výše uvedeném diagramu:

  • Jedna kategorie může mít mnoho produktů.
  • Jeden produkt patří do jedné a pouze jedné kategorie.

Proto mezi řádky v tabulka a řádky v tabulce products. Spojením mezi těmito dvěma tabulkami je sloupec categoryid.

Z obou tabulek musíme zjistit následující údaje:

  • productID, productName z products tabulky.
  • categoryName z categories tabulky.

Následující dotaz načte data z obou tabulek:

1
2
3
4
5
6

SELECT
productID, productName, categoryName
OD
produktů
VNITŘNÍ PŘIPOJENÍ
category ON categories.categoryID = products.categoryID;

Podmínka spojení je uvedena v klauzuli INNER JOIN za klíčovým slovem ON jako výraz:

1

category.categoryID = products.categoryID

Pro každý řádek v products tabulka, dotaz najde odpovídající řádek v categories tabulce, který má stejnou categoryid. Pokud existuje shoda mezi dvěma řádky v v obou tabulkách vrací řádek, který obsahuje sloupce uvedené v klauzuli SELECT, tj. ID produktu, název produktu a název kategorie; jinak zkontroluje další řádek v products tabulce a najde odpovídající řádek v categories tabulce. Tento proces pokračuje, dokud se neprozkoumá poslední řádek tabulky produktů.

SQL INNER JOIN – dotazování na data ze tří tabulek

Ke spojení tří tabulek můžeme použít stejné techniky.Následující dotaz vybere productID, productName, categoryName a supplier z products, categories a suppliers tabulek:

1
2
3
4
5
6
7
8
9
10
11

SELECT
productID,
productName,
categoryName,
companyName jako dodavatel
Z
produktů
VNITŘNÍ PŘIPOJENÍ
kategorií ON kategorií. categoryID = products.categoryID
VNITŘNÍ PŘIPOJENÍ
dodavatelé ON na dodavatele.supplierID = produkty.supplierID

Implicit SQL INNER JOIN

Existuje další forma INNER JOIN nazývaná implicitní vnitřní spojení, jak je uvedeno níže:

1
2
3
4
5
6
7

VÝBĚR
sloupec1, sloupec2
OD
tabulka_1,
tabulka_2
KDE
join_condition;

V tomto formuláři určíte všechny spojené tabulky v klauzuli FROM a v klauzuli WHERE příkazu SELECT vložte podmínku join. Výše uvedený příklad dotazu můžeme přepsat pomocí implicitního INNER JOIN takto:

1
2
3
4
5
6
7

SELECT
ID produktu, název produktu, název kategorie
OD
produkty,
kategorie
KDE
products.categoryID = category.categoryID;

Vizualizace INNER JOIN pomocí Vennova diagramu

Write a Comment

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *