দুই বা একাধিক টেবিলের কলাম কম্বাইন করে একটি নতুন টেবিলে ইনসার্ট করতে INSERT INTO SELECT সাথে কমা-জয়েন (CROSS JOIN) বা এক্সপ্লিসিট JOIN ব্যবহার করা হয়।
টেবিল ১: নাম
mysql> CREATE TABLE DemoTable1943 (Name VARCHAR(20));
mysql> INSERT INTO DemoTable1943 VALUES ('Chris'), ('Robert');
টেবিল ২: বয়স
mysql> CREATE TABLE DemoTable1944 (Age INT); mysql> INSERT INTO DemoTable1944 VALUES (23), (26);
টেবিল ৩: গন্তব্য (নাম + বয়স)
mysql> CREATE TABLE DemoTable1945 (
StudentName VARCHAR(20),
StudentAge INT
);
CROSS JOIN দিয়ে ইনসার্ট (কার্টেশিয়ান প্রোডাক্ট)
mysql> INSERT INTO DemoTable1945 (StudentName, StudentAge)
SELECT tbl1.Name, tbl2.Age
FROM DemoTable1943 tbl1, DemoTable1944 tbl2; -- কমা = CROSS JOIN
আউটপুট: Query OK, 4 rows affected (0.00 sec) (২ × ২ = ৪ সারি)
ফলাফল যাচাই
mysql> SELECT * FROM DemoTable1945;
+-------------+------------+ | StudentName | StudentAge | +-------------+------------+ | Chris | 23 | | Robert | 23 | | Chris | 26 | | Robert | 26 | +-------------+------------+
ব্যাখ্যা
FROM tbl1, tbl2— IMPLICIT CROSS JOIN (প্রতিটি সারি অন্যটির সাথে জুড়ে)।- ফলাফল: ২ নাম × ২ বয়স = ৪ কম্বিনেশন।
যদি সিকুয়েন্সিয়াল ম্যাচিং চান (Chris-23, Robert-26)
তখন ROW_NUMBER() বা অটো-ইনক্রিমেন্ট আইডি ব্যবহার করে এক্সপ্লিসিট JOIN করুন:
WITH named AS (SELECT Name, ROW_NUMBER() OVER () AS rn FROM DemoTable1943),
aged AS (SELECT Age, ROW_NUMBER() OVER () AS rn FROM DemoTable1944)
INSERT INTO DemoTable1945 (StudentName, StudentAge)
SELECT n.Name, a.Age FROM named n JOIN aged a ON n.rn = a.rn;
সতর্কতা
- CROSS JOIN বড় টেবিলে অত্যধিক সারি তৈরি করতে পারে (N × M) — সতর্কতা বজায় রাখুন।
- প্রোডাকশনে এক্সপ্লিসিট
CROSS JOINকীওয়ার্ড ব্যবহার করুন পঠনীয়তার জন্য।