মূল কন্টেন্টে যান
মডিউল 5 · 3-এর পাঠ 4কোর্সে 19/57~10 min
মডিউল পাঠ (3/4)

বাইরের যোগদান: "শূন্যতা" খুঁজে পাওয়া

মডিউল 3-এ আপনি LEFT JOIN দেখেছেন: সমস্ত সারি বাম দিকে রাখুন, এমনকি সেগুলিও ডানদিকে একটি মিল ছাড়াই (যা হয়ে যায় NULL)। এই অধ্যায়ে আমরা টুলকিটটিকে RIGHT JOIN এবং FULL OUTER JOIN দিয়ে প্রসারিত করুন, এবং আমরা শিখি ডেটাতে "গর্ত" খুঁজতে কীভাবে সেগুলি ব্যবহার করবেন: একটি টেবিলে সারি অন্য কোন প্রতিরূপ আছে.

তিন ধরনের OUTER Join

SQL
A LEFT  JOIN B  ON …  -- tutte le righe di A, con o senza match in B
A RIGHT JOIN B  ON …  -- tutte le righe di B, con o senza match in A
A FULL  JOIN B  ON …  -- tutte le righe di A *e* di B; NULL dove non c'è match

A RIGHT JOIN B সবসময় একই সাথে B LEFT JOIN A হিসাবে পুনরায় লেখা যেতে পারে ON: এটা পঠনযোগ্যতার বিষয়। অনেক শৈলী (এই কোর্স সহ) ধারাবাহিকতার জন্য সর্বদা LEFT JOIN ব্যবহার করতে পছন্দ করুন।

"অ্যান্টি-জইন" প্যাটার্ন: অনুপস্থিতদের খুঁজে বের করা

LEFT JOIN-এর সবচেয়ে সাধারণ ব্যবহার হল "এর ডেটা দিয়ে সমৃদ্ধ করা নয় ডান", কিন্তু বাম দিকের সারিগুলি খুঁজুন যেগুলির সাথে কোন মিল নেই৷ ঠিক। একে বলা হয় অ্যান্টি-জোইন:

SQL
-- Prodotti senza nessuna recensione:
SELECT p.id, p.name
FROM   products p
LEFT JOIN reviews r ON r.product_id = p.id
WHERE  r.id IS NULL
ORDER BY p.id;

প্যাটার্ন যুক্তি:

  1. LEFT JOIN প্রতিটি পণ্যের পর্যালোচনা সংযুক্ত করে, যদি থাকে;
  2. রিভিউ ছাড়া পণ্যের জন্য, সমস্ত r কলাম হল NULL;
  3. WHERE r.id IS NULL শুধু সেই পণ্যগুলি রাখে৷

মূল চেক: একটি id IS NULL ডানদিকের টেবিলের একটি NOT NULL কলামে মানে "কোন মিল ছিল না"। আপনি প্রায়ই ডান হাতের পিকে ফিল্টার করেন এই কারণে অবিকল টেবিল.

সম্পূর্ণ বাইরে যোগদান

FULL OUTER JOIN কোনো ম্যাচ ছাড়াই উভয় পক্ষকে রাখে। এটি খুব কমই ব্যবহৃত হয়, সাধারণত ডেটা অখণ্ডতা পরীক্ষা করার জন্য:

SQL
SELECT c.id AS customer_id, o.id AS order_id
FROM   customers c
FULL OUTER JOIN orders o ON o.customer_id = c.id
WHERE  c.id IS NULL OR o.id IS NULL;

c.id IS NULL সহ সারিগুলি অনাথ অর্ডার হবে (একটি customer_id যেটি customers এ বিদ্যমান নেই)। যাদের কাছে o.id IS NULL তারা গ্রাহক আদেশ ছাড়া। আমাদের ডেটাসেটে বিদেশী কী গ্যারান্টি দেয় যে কোন অনাথ নেই আদেশ বিদ্যমান; শুধুমাত্র অর্ডার ছাড়াই গ্রাহকরা থাকবেন।

নিজে চেষ্টা করে দেখুন

ব্যায়াম#sql.m5.l3.e1
প্রচেষ্টা: 0লোড হচ্ছে...

ত্রোভা তুত্তি আমি প্রদোত্তি চে অ হ্যানো মাই রিসেভুতো উনা রিসেনশনে। মোস্ট্রা সোলো লা কোলোনা নাম। নাম অনুযায়ী Ordina.

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

প্যাটার্ন অ্যান্টি-জইন: বাম যোগ দিন প্রোডাক্ট_আইডির পর্যালোচনা, যেখানে r.id শূন্য।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম পর্যালোচনা করুন

ব্যায়াম#sql.m5.l3.e2
প্রচেষ্টা: 0লোড হচ্ছে...

ট্রভা আমি ক্লায়েন্ট চে নন হ্যানো মাই অর্ডিন্যাটো নুল্লা। মোস্ট্রা ইমেইল। ইমেইল প্রতি Ordina.

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

Stesso প্যাটার্ন dell'esercizio precedente, ma fra গ্রাহকদের এবং অর্ডার.

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ