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

MySQL-এ UNION ALL দিয়ে বিষয়ভিত্তিক মার্কস এক কলামে দেখানো

MySQL-এ UNION ALL ব্যবহার করে একাধিক কলামের ডেটা একই কলামে (রো-ওরিয়েন্টেড) রূপান্তর করা যায়।

উদাহরণ: বিষয়ভিত্তিক মার্কস

mysql> CREATE TABLE DemoTable729 (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(100),
    MySQLMarks INT,
    CMarks INT,
    JavaMarks INT
);
Query OK, 0 rows affected (0.40 sec)

mysql> INSERT INTO DemoTable729 (StudentName, MySQLMarks, CMarks, JavaMarks) VALUES
('Chris', 94, 67, 75), ('Robert', 45, 99, 54), ('David', 57, 89, 43);
Query OK, 3 rows affected

ওয়াইড ফরম্যাট (প্রতিটি বিষয় আলাদা কলাম)

mysql> SELECT * FROM DemoTable729;
+-----------+-------------+------------+--------+-----------+
| StudentId | StudentName | MySQLMarks | CMarks | JavaMarks |
+-----------+-------------+------------+--------+-----------+
| 1         | Chris       | 94         | 67     | 75        |
| 2         | Robert      | 45         | 99     | 54        |
| 3         | David       | 57         | 89     | 43        |
+-----------+-------------+------------+--------+-----------+

লং ফরম্যাট (UNION ALL - একটি কলামে সব মার্কস)

mysql> SELECT StudentId, StudentName, 'MySQL' AS SubjectName, MySQLMarks AS Score FROM DemoTable729
UNION ALL
SELECT StudentId, StudentName, 'C' AS SubjectName, CMarks AS Score FROM DemoTable729
UNION ALL
SELECT StudentId, StudentName, 'Java' AS SubjectName, JavaMarks AS Score FROM DemoTable729;
+-----------+-------------+-------------+-------+
| StudentId | StudentName | SubjectName | Score |
+-----------+-------------+-------------+-------+
| 1         | Chris       | MySQL       | 94    |
| 2         | Robert      | MySQL       | 45    |
| 3         | David       | MySQL       | 57    |
| 1         | Chris       | C           | 67    |
| 2         | Robert      | C           | 99    |
| 3         | David       | C           | 89    |
| 1         | Chris       | Java        | 75    |
| 2         | Robert      | Java        | 54    |
| 3         | David       | Java        | 43    |
+-----------+-------------+-------------+-------+

UNION vs UNION ALL

  • UNION → ডুপ্লিকেট সরিয়ে দেয় (স্লো)
  • UNION ALL → সব রো রেখে দেয় (ফাস্ট, এখানে ডুপ্লিকেট নেই)

ব্যবহার: রিপোর্টিং, চার্টিং, এক্সপোর্টে লং ফরম্যাট দরকার হলে।

  1. MySQL-এ নির্দিষ্ট ছাত্রের মার্কস গোষ্ঠীবদ্ধ করুন এবং প্রতিটি ছাত্রের জন্য মোট মার্কস আলাদা কলামে প্রদর্শন করুন

  2. MySQL-এ IF() ফাংশন দিয়ে NULL ভ্যালুর ভিত্তিতে কাস্টম টেক্সট দেখানো

  3. MySQL-এ CASE WHEN দিয়ে ছাত্রদের নম্বর অনুযায়ী কাস্টম মেসেজ সেট করা

  4. MySQL-এ GROUP BY DATE() ব্যবহার করে ডISTINCT তারিখের রেকর্ড বের করা