StepCoding

การรวมผลลัพธ์หลายคำสั่ง SELECT ด้วย UNION

อ่าน [2958] หมวดหมู่: คำสั่ง SELECT เบื้องต้น

Keyword UNION จะช่วยให้เรานำผลลัพธ์ที่ได้จากคำสั่ง SELECT หลาย ๆ คำสั่งมารวมกัน โดยมีรูปแบบดังนี้

SELECT ... UNION
SELECT ... UNION
SELECT ...

ผลลัพธ์ที่ได้จริง ๆ ก็คือแถวข้อมูลที่ได้รับจากคำสั่ง SELECT แรก ตามด้วยแถวข้อมูลที่ได้รับจากคำสั่ง SELECT ที่สอง และต่อด้วยแถวข้อมูลที่ได้รับจากคำสั่ง SELECT ที่สาม ซึ่งแต่ละคำสั่ง SELECT จะต้องมีจำนวน field ที่เท่ากัน

โดยปกติแล้ว UNION จะทำการตัดแถวที่ซ้ำกันออก แต่ถ้าเราต้องการเก็บข้อมูลทุกแถวไว้ให้ใช้ UNION ALL แทน

สมมิว่าเราต้องการเก็บ mailling list จาก 3 ตาราง ซึ่งแต่ละตารางนั้นใช้ MySQL package ที่ต่างกันไป และแต่ละ package จะทำการเก็บ name และ email address เหมือนกัน โดยมีโครงสร้างตารางดังนี้

CREATE TABLE list1
(
	subscriber 	CHAR(60),
	email	CHAR(60)
);
CREATE TABLE list2
(
	name	CHAR(255),
	address	CHAR(255)
);
CREATE TABLE list3
(
	email	CHAR(50),
	real_name	CHAR(30)
);

ในแต่ละตารางจะประกอบไปด้วยข้อมูลดังนี้

List1
subscriberemail
Geneticgenetic@stepcoding.com
Adminadmin@stepcoding.com
List2
nameaddress
Caspercasper@basic-skill.com
Adminadmin@basic-skill.com
List3
emailreal_name
Johnjohn@basic-digg.com
Adminadmin@basic-digg.com

เมื่อเราต้องการแสดงข้อมูลจาก mailling list ทั้ง 3 ตาราง จะต้องใช้คำสั่งดังนี้

SELECT subscriber, email FROM list1
UNION SELECT name, address FROM list2
UNION SELECT real_name, email FROM list3;
subscriberemail
Geneticgenetic@stepcoding.com
Adminadmin@stepcoding.com
Caspercasper@basic-skill.com
Adminadmin@basic-skill.com
Johnjohn@basic-digg.com
Adminadmin@basic-digg.com

ผู้สนับสนุน