CROSS JOIN दो टेबल्स (या एक ही टेबल के दो सबसेट) का कार्टेशियन गुणनफल लौटाता है।
एक टेबल बनाते हैं:
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');
INSERT INTO PairDemo (UserName, UserRelationshipName) VALUES ('Carol', 'James');
INSERT INTO PairDemo (UserName, UserRelationshipName) VALUES ('Carol', 'David');
INSERT INTO PairDemo (UserName, UserRelationshipName) VALUES ('Sam', 'David');
सभी रिकॉर्ड देखें:
SELECT * FROM PairDemo;
आउटपुट
+--------+----------+----------------------+ | UserId | UserName | UserRelationshipName | +--------+----------+----------------------+ | 1 | John | James | | 2 | Carol | James | | 3 | Carol | David | | 4 | 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 * FROM PairDemo tbl
WHERE tbl.UserName = U.UserName
AND tbl.UserRelationshipName = UR.UserRelationshipName
);
आउटपुट
+----------+----------------------+ | UserName | UserRelationshipName | +----------+----------------------+ | Sam | James | | John | David | +----------+----------------------+
व्याख्या: सभी संभावित (UserName, UserRelationshipName) जोड़े उत्पन्न हुए, फिर मौजूदा जोड़ों को बाहर रखा गया।