কম্পিউটার টিউটোরিয়াল

MySQL-এ একাধিক টেবিল থেকে ডেটা নিয়ে একটি টেবিলে ইনসার্ট করা (CROSS JOIN)

দুই বা একাধিক টেবিলের কলাম কম্বাইন করে একটি নতুন টেবিলে ইনসার্ট করতে 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 কীওয়ার্ড ব্যবহার করুন পঠনীয়তার জন্য।
  1. MySQL-এ CONCAT() এবং JOIN ব্যবহার করে আলাদা টেবিলের কলাম সংযুক্ত করুন

  2. MySQL-এ একাধিক টেক্সট রেকর্ড একসাথে जोড়া দেওয়া (GROUP_CONCAT)

  3. MySQL-এ একাধিক কলাম একসাথে আপডেট করা (সিঙ্গল কুয়েরি)

  4. MySQL-এ একক INSERT স্টেটমেন্টে একাধিক রো দ্রুত ইনসার্ট করা