JOIN აერთიანებს სტრიქონებს ორი ცხრილიდან პირობის დამთხვევით, ჩვეულებრივ foreign key-ით. Join-ის ტიპი წყვეტს, რა ხდება იმ სტრიქონებთან, რომლებსაც დამთხვევა არ აქვთ მეორე მხარეს.
JOIN აერთიანებს სტრიქონებს ორი ცხრილიდან პირობის დამთხვევით, ჩვეულებრივ foreign key-ით. Join-ის ტიპი წყვეტს, რა ხდება იმ სტრიქონებთან, რომლებსაც დამთხვევა არ აქვთ მეორე მხარეს.
NULL-ად.-- customers(id, name) orders(id, customer_id, total)
-- INNER: მხოლოდ ის მომხმარებლები, რომლებსაც აქვთ სულ მცირე ერთი order
SELECT c.name, o.total
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id;
-- LEFT: ყოველი მომხმარებელი, თუნდაც ნულოვანი order-ებით (total = NULL)
SELECT c.name, o.total
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;
-- კლასიკური გამოყენება: იპოვეთ მომხმარებლები order-ების გარეშე
SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.id IS NULL; -- LEFT JOIN-ის NULL მხარე ავლენს ხარვეზს
WHERE-ში (მაგ. WHERE o.total > 100) ჩუმად აქცევს LEFT JOIN-ს ისევ INNER JOIN-ად, რადგან NULL > 100 არის false. ასეთი პირობები მოათავსეთ ON clause-ში, თუ გინდათ დაუმთხვეველი სტრიქონების შენარჩუნება.უმეტესი რეალური მოთხოვნა ფარავს რამდენიმე ცხრილს და არასწორი join-ის ტიპი ჩუმად აგდებს ან ამრავლებს სტრიქონებს — bug, რომელიც აბრუნებს დამაჯერებელ შედეგებს. იმის ცოდნა, რომ LEFT JOIN + IS NULL პოულობს "დაკარგულ" სტრიქონებს და რომ WHERE null მხარეზე აუქმებს LEFT-ს, თავიდან აცილებს საანგარიშო შეცდომების მთელ კლასს.
IT გასაუბრების კითხვების ბიბლიოთეკა დეტალური პასუხებით — Junior-დან Senior-მდე.
შემოწირულობა