วิธีใช้งาน UNION ใน MySQL-2

วิธีใช้งาน UNION ใน MySQL เพื่อควบรวมข้อมูลหลายตาราง

คำสั่ง UNION ใน MySQL เป็นคำสั่งที่ใช้สำหรับการรวมข้อมูลในตารางฐานข้อมูล ที่มีความคล้ายกัน ตั้งแต่ 2 ตารางขึ้นไป โดยผลลัพธ์ที่ได้ จะอ้างอิงตามชื่อ Field หรือ Column ของ Table หลัก หรืออยู่ภายใต้ข้อมูลของตารางที่ SELECT ไม่ใช่ตารางที่ทำการ UNION

ตัวอย่างและวิธีใช้งาน คำสั่ง UNION ใน MySQL

  • เพื่อให้เห็นภาพชัดเจนและเข้าใจง่ายขึ้น ให้ทดลองสร้างตารางฐานข้อมูลมา 2 ตาราง คือ ตาราง companies และ ตาราง suppliers และเพิ่มข้อมูลเข้าไปในทั้ง 2 ตาราง โดยใช้คำสั่งดังนี้ครับ

สร้าง Table สำหรับทดสอบ

CREATE TABLE `companies` (
  `company_id` int(11) NOT NULL,
  `company_name` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `companies` (`company_id`, `company_name`) VALUES
(1, 'company 1'),
(2, 'company 2'),
(3, 'company 3');

CREATE TABLE `suppliers` (
  `supplier_id` int(11) NOT NULL,
  `supplier_name` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `suppliers` (`supplier_id`, `supplier_name`) VALUES
(1, 'supplier 1'),
(2, 'supplier 2'),
(3, 'supplier 3');
  • หลังจากที่เราได้สร้างตารางฐานข้อมูลทั้ง 2 เรียบร้อยแล้ว เราจะทดสอบการรวมข้อมูลของทั้ง 2 ตาราง โดยให้ตาราง companies เป็นตารางหลัก และทำการรวมข้อมูล ( UNION ) จากตาราง suppliers ซึ่งสามารถเขียนคำสั่งได้ดังนี้

ทดสอบ Query ข้อมูล

SELECT * /* ใช้การ select แบบ * ตารางที่ union เข้ามาต้องมีจำนวนฟิลด์เท่ากันกับตารางหลัก */
FROM suppliers
UNION
SELECT *
FROM companies

ผลลัพธ์ที่ได้ของคำสั่งด้านบน จะสังเกตุเห็นว่า ข้อมูลของตารางที่ถูก UNION จะมารวบอยู่ในตารางหลัก ภายในชื่อ column name ของตารางหลัก คือ รวม suppliers_id มาไว้ใน company_id และ รวม suppliers_name มาไว้ใน company_name

  • ข้อควรรู้สำหรับคำสั่ง UNION คือ ทุกตารางที่ UNION กับตารางหลักจะต้องมีจำนวน Fields ที่เท่ากันกับตารางหลัก คำสั่ง SELECT * จะไม่สามารถใช้งานได้ทันที กรณีที่ตารางใด ตารางหนึ่ง มี Fields มากกว่า ตารางหลัก เราสามารถแก้ปัญหานี้ได้ ด้วยการกำหนด SELECT Fields1,Fields2 ให้กับแต่ละตาราง ตามตัวอย่างด้านล่างครับ
SELECT company_id, company_name /* จำนวนฟิลด์ของตารางหลักคือ 2 */
FROM companies
UNION
SELECT supplier_id, supplier_name /* จำนวนฟิลด์ของตาราง UNION ก็ต้องมี 2 ฟิลด์ด้วย */
FROM suppliers

สรุป คำสั่ง UNION เหมาะใช้สำหรับการรวมผลข้อมูลจากตารางที่มีความคล้ายคลึงกับตารางหลัก ตัวอย่างเช่น ตารางหลัก คือ companies ต้องการนำข้อมูลจากตาราง supplier และตาราง investor ซึ่งมีการเก็บข้อมูลในลักษณะเดียวกัน รวบเป็นข้อมูลชุดเดียวกัน เพื่อนำไปจัดเรียง และ แสดงผลในหน้าเดียวกัน ลักษณะเดียวกัน

Leave a Reply