JOIN yhdistää rivejä kahdesta taulusta täsmäämällä ehdon, yleensä foreign keyn. Join-tyyppi ratkaisee, mitä tapahtuu riveille, joilla ei ole vastinetta toisella puolella.
JOIN yhdistää rivejä kahdesta taulusta täsmäämällä ehdon, yleensä foreign keyn. Join-tyyppi ratkaisee, mitä tapahtuu riveille, joilla ei ole vastinetta toisella puolella.
NULL.-- customers(id, name) orders(id, customer_id, total)
-- INNER: vain asiakkaat, joilla on vähintään yksi tilaus
SELECT c.name, o.total
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id;
-- LEFT: jokainen asiakas, myös ne joilla on nolla tilausta (total = NULL)
SELECT c.name, o.total
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;
-- Klassinen käyttö: etsi asiakkaat, joilla EI ole tilauksia
SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.id IS NULL; -- LEFT JOIN:n NULL-puoli paljastaa aukon
WHERE:ssä (esim. WHERE o.total > 100) muuttaa LEFT JOIN:n hiljaisesti takaisin INNER JOIN:iksi, koska NULL > 100 on epätosi. Laita tällaiset ehdot ON-lausekkeeseen, jos haluat säilyttää täsmäämättömät rivit.Useimmat oikeat kyselyt ulottuvat monille tauluille, ja väärä join-tyyppi pudottaa tai kahdentaa rivejä hiljaisesti — bugi, joka palauttaa uskottavia tuloksia. Sen tietäminen, että LEFT JOIN + IS NULL löytää "puuttuvat" rivit ja että WHERE null-puolella kumoaa LEFT:n, estää kokonaisen raportointivirheiden luokan.
Kirjasto IT-haastattelukysymyksiä yksityiskohtaisine vastauksineen — Juniorista Senioriin.
Lahjoita