JOIN sujungia eilutes iš dviejų lentelių, suderindamas pagal sąlygą, dažniausiai išorinį raktą. Jungimo tipas nusprendžia, kas nutinka eilutėms, kurios neturi atitikmens kitoje pusėje.
JOIN sujungia eilutes iš dviejų lentelių, suderindamas pagal sąlygą, dažniausiai išorinį raktą. Jungimo tipas nusprendžia, kas nutinka eilutėms, kurios neturi atitikmens kitoje pusėje.
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 sąlygoje (pvz. WHERE o.total > 100) tyliai vėl paverčia LEFT JOIN į INNER JOIN, nes NULL > 100 yra netiesa. Tokias sąlygas dėkite į ON sakinį, jei norite išlaikyti neatitinkančias eilutes.Dauguma realių užklausų apima kelias lenteles, o netinkamas jungimo tipas tyliai pameta arba dubliuoja eilutes — klaida, grąžinanti tikėtinus rezultatus. Žinojimas, kad LEFT JOIN + IS NULL randa „trūkstamas“ eilutes, ir kad WHERE sąlyga null pusėje panaikina LEFT, užkerta kelią ištisai ataskaitų klaidų klasei.
IT pokalbių klausimų biblioteka su išsamiais atsakymais — nuo Junior iki Senior.
Paaukoti