En JOIN kombinerer rader fra to tabeller ved å matche en betingelse, vanligvis en foreign key. Join-typen avgjør hva som skjer med rader som ikke har noe treff på den andre siden.
En JOIN kombinerer rader fra to tabeller ved å matche en betingelse, vanligvis en foreign key. Join-typen avgjør hva som skjer med rader som ikke har noe treff på den andre siden.
NULL.-- customers(id, name) orders(id, customer_id, total)
-- INNER: only customers who have at least one order
SELECT c.name, o.total
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id;
-- LEFT: every customer, even those with zero orders (total = NULL)
SELECT c.name, o.total
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;
-- Classic use: find customers with NO orders
SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.id IS NULL; -- the LEFT JOIN's NULL side reveals the gap
WHERE (f.eks. WHERE o.total > 100) gjør stille om en LEFT JOIN til en INNER JOIN igjen, fordi NULL > 100 er usant. Legg slike betingelser i ON-klausulen hvis du vil beholde rader uten treff.De fleste reelle spørringer strekker seg over flere tabeller, og feil join-type dropper eller dupliserer rader i det stille — en feil som returnerer plausible resultater. Å vite at LEFT JOIN + IS NULL finner "manglende" rader, og at en WHERE på null-siden opphever LEFT-en, forhindrer en hel klasse av rapporteringsfeil.
Et bibliotek av IT-intervjuspørsmål med detaljerte svar — fra Junior til Senior.
Doner