Ondřej Šteigl - Logo ONDŘEJ ŠTEIGL
Databáze / SQL

Spojování tabulek (JOIN)

Srdce relační databáze – proč data rozdělit do více tabulek a jak je zase spojit přes JOIN.

Čtení 9 min mírně pokročilý Naposledy upraveno 6. 10. 2026

Předtím: Měníme data: INSERT, UPDATE, DELETE

Zatím jsme pracovali s jednou tabulkou. Jenže skutečná síla databáze je v tom, že data rozdělíte do více tabulek, které se propojí. Právě tahle „párovost" dala databázím jméno – říká se jim relační, od slova relace (vztah). A dotaz, který tabulky spojí dohromady, se jmenuje JOIN.

Proč vůbec víc tabulek

Představte si, že u každého produktu uložíme kategorii jako text přímo do tabulky produkty. U stovky produktů byste slovo „Příslušenství" napsali klidně padesátkrát. A když ho budete chtít přejmenovat, musíte opravit všech padesát řádků – a stačí jeden překlep a máte v datech zmatek.

Lepší je kategorie uložit jednou do vlastní tabulky a v produktech se na ni jen odkázat číslem:

tabulka: kategorie
idnazev
1Příslušenství
2Monitory
tabulka: produkty
idnazevkategorie_id
1Klávesnice1
2Monitor 24"2

Propojení přes id

Sloupec kategorie_id v produktech ukazuje na id v tabulce kategorií. Klávesnice má kategorie_id = 1, což je „Příslušenství". Tomuhle odkazu se říká cizí klíč – je to ta nitka, která obě tabulky spojuje. Kategorii pak přejmenujete na jednom jediném místě a projeví se u všech produktů.

JOIN – spojení tabulek v jednom dotazu

Když chcete vypsat produkty rovnou s názvem kategorie (ne jen s číslem), spojíte obě tabulky příkazem JOIN a řeknete, podle čeho se mají spárovat:

SELECT produkty.nazev, produkty.cena, kategorie.nazev
FROM produkty
JOIN kategorie ON produkty.kategorie_id = kategorie.id;

Klíčová je část ON produkty.kategorie_id = kategorie.id – přesně ta říká, které řádky k sobě patří. Výsledek spojí data z obou tabulek do jedné:

výsledek JOIN
produktcenakategorie
Klávesnice790Příslušenství
Monitor 24"4990Monitory
💡 Tip: Když vás nebaví psát dlouhé produkty. a kategorie., dejte tabulkám zkratku: FROM produkty p JOIN kategorie k ON p.kategorie_id = k.id. Pak stačí psát p.nazev a k.nazev.

A tohle je ta „párovost"

Přesně v tomhle je databáze jiná než obyčejná tabulka v Excelu: data si rozložíte do více tabulek, aby se neopakovala, a pomocí klíčů je zase podle potřeby spojíte. Čím větší web, tím víc se to vyplatí – e-shop má tabulky pro produkty, kategorie, objednávky i zákazníky a všechny jsou propojené.

Jak dál: SQL + PHP

Teď umíte tabulku vytvořit, naplnit, číst z ní, měnit data i spojovat tabulky. Na opravdovém webu ale tyhle dotazy nepíše člověk ručně – spouští je PHP, které výsledek vezme a vypíše do HTML stránky. To je poslední dílek skládačky a zaslouží si vlastní návod: jak se z PHP k databázi bezpečně připojit a dotazy spouštět tak, aby web nešlo zneužít. Na ten se podíváme příště.

Všechny návody

Nechcete web řešit sami a chcete ho mít hotový a profesionální?

Podívejte se na tvorbu webů →

© Ondřej Šteigl. Autorem návodů jsem já. Obsah je autorským dílem chráněným podle zákona č. 121/2000 Sb. (autorský zákon). Kopírování, přebírání nebo šíření bez mého předchozího písemného souhlasu je zakázáno. Výukové použití je vítáno – stačí uvést zdroj (osteigl.cz).

← Zpět na všechny návody