CROSS JOIN দুটি টেবিলের কার্টেশিয়ান প্রোডাক্ট (সর্ব সম্ভাব্য কোম্বিনেশন) ফেরত দেয়। WHERE ক্লজ ছাড়া এটি সব রো কোম্বাইন করে।
টেবিল ও ডেটা
CREATE TABLE PairDemo (
UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName VARCHAR(20),
UserRelationshipName VARCHAR(20)
);
INSERT INTO PairDemo (UserName, UserRelationshipName) VALUES
('John', 'James'), ('Carol', 'James'), ('Carol', 'David'), ('Sam', 'David');
CROSS JOIN উদাহরণ: অনুপস্থিত কোম্বিনেশন খুঁজুন
SELECT U.UserName, UR.UserRelationshipName
FROM (
SELECT DISTINCT UserName FROM PairDemo
) U
CROSS JOIN (
SELECT DISTINCT UserRelationshipName FROM PairDemo
) UR
WHERE NOT EXISTS (
SELECT 1 FROM PairDemo P
WHERE P.UserName = U.UserName
AND P.UserRelationshipName = UR.UserRelationshipName
);
ফলাফল
+----------+----------------------+ | UserName | UserRelationshipName | +----------+----------------------+ | Sam | James | | John | David | +----------+----------------------+
ব্যাখ্যা
- সামগ্রিক ৪×২=৮ কোম্বিনেশন সম্ভব
- বিদ্যমান ৪ টি বাদ দিয়ে বাকি ২ টি (Missing pairs) দেখানো হয়েছে
সতর্কতা
- বড় টেবিলে CROSS JOIN খুব ধীর (N×M রো)
- প্রয়োজনীয় কলামই সিলেক্ট করুন
- WHERE দিয়ে ফিল্টার করুন