JOIN združi vrstice iz dveh tabel z ujemanjem po pogoju, običajno po tujem ključu. Tip stikanja določa, kaj se zgodi z vrsticami, ki na drugi strani nimajo ujemanja.
JOIN združi vrstice iz dveh tabel z ujemanjem po pogoju, običajno po tujem ključu. Tip stikanja določa, kaj se zgodi z vrsticami, ki na drugi strani nimajo ujemanja.
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 (npr. WHERE o.total > 100) tiho spremeni LEFT JOIN nazaj v INNER JOIN, ker je NULL > 100 neresnično. Take pogoje postavite v ON, če želite obdržati neujemajoče se vrstice.Večina resničnih poizvedb sega čez več tabel, napačen tip stikanja pa tiho izpusti ali podvoji vrstice — napaka, ki vrne verjetne rezultate. Vedenje, da LEFT JOIN + IS NULL najde "manjkajoče" vrstice in da WHERE na strani z NULL prekliče LEFT, prepreči cel razred napak pri poročanju.
Knjižnica IT vprašanj za razgovore s podrobnimi odgovori — od začetnika do izkušenega.
Doniraj