আগের Joins lesson INNER, LEFT, RIGHT, আর FULL কভার করেছে — এদের প্রতিটাই দুটি ভিন্ন table থেকে row একসাথে করে। এই শেষ দুটি join একটু ভিন্ন।
SQL সিনট্যাক্সে আলাদা একটা join type না — আগের যেকোনো join (সাধারণত INNER বা LEFT) দুটি ভিন্ন alias-এর অধীনে নিজের সাথে জোড়া লাগানো একটা table-এ ব্যবহৃত। ক্লাসিক use case: একটা table যেখানে একটা row একই table-এর আরেকটা row reference করে, যেমন একজন employee তাদের manager-কে reference করে।
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
manager_id INT
);
SELECT
e.name AS employee,
m.name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id;e আর m)।Common Mistake
Table-এর দুটি কপি alias করতে ভুলে গেলে query-র জন্য কোন "id" বা "name"-এর কথা বলা হচ্ছে তা জানা অসম্ভব হয়ে যায় — এটাই একমাত্র join type যেখানে একটা alias optional না।
একটা table-এর প্রতিটা row অন্য একটা table-এর প্রতিটা row-এর সাথে একসাথে করে — কোনো matching শর্ত ছাড়াই। ৩ row-এর একটা table ৪ row-এর একটা table-এর সাথে CROSS JOIN করলে ১২টা row তৈরি হয়।
SELECT sizes.size, colors.color
FROM sizes
CROSS JOIN colors;
-- sizes-এ S/M/L আর colors-এ Red/Blue থাকলে,
-- এটা সব ৬টা combination তৈরি করে: S-Red, S-Blue, M-Red, M-Blue, L-Red, L-Blue| Join type | যে row তৈরি হয় |
|---|---|
| SELF JOIN | একটা সাধারণ join (INNER/LEFT/ইত্যাদি), শুধু একই table-এ দুবার |
| CROSS JOIN | প্রতিটা row × প্রতিটা row — কোনো matching শর্ত নেই |