JOIN kombinuje řádky ze dvou tabulek na základě splnění podmínky, obvykle cizího klíče. Typ joinu rozhoduje, co se stane s řádky, které nemají shodu na druhé straně.
JOIN kombinuje řádky ze dvou tabulek na základě splnění podmínky, obvykle cizího klíče. Typ joinu rozhoduje, co se stane s řádky, které nemají shodu na druhé straně.
NULL.-- customers(id, name) orders(id, customer_id, total)
-- INNER: jen zákazníci, kteří mají alespoň jednu objednávku
SELECT c.name, o.total
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id;
-- LEFT: každý zákazník, i ti s nulou objednávek (total = NULL)
SELECT c.name, o.total
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;
-- Klasické použití: najít zákazníky BEZ objednávek
SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.id IS NULL; -- NULL strana LEFT JOINu odhalí mezeru
WHERE (např. WHERE o.total > 100) tiše promění LEFT JOIN zpět v INNER JOIN, protože NULL > 100 je nepravda. Takové podmínky dejte do klauzule ON, pokud chcete zachovat neshodné řádky.Většina reálných dotazů se rozprostírá přes více tabulek a nesprávný typ joinu tiše zahazuje nebo duplikuje řádky — chyba, která vrací věrohodné výsledky. Vědomí, že LEFT JOIN + IS NULL najde "chybějící" řádky a že WHERE na null straně ruší LEFT, brání celé třídě chyb v reportech.
Knihovna IT otázek k pohovoru s podrobnými odpověďmi — od Junior po Senior.
Přispět