PostgreSQL : คำสั่ง SQL การใช้ UNION

PostgreSQL แชร์ความรู้เกี่ยวกับ PostgreSQL การใช้งาน ฟังก์ชั่นต่างๆ การเขียน SQL แบบ PGSQL

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
thitikorn_lp
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 680
ลงทะเบียนเมื่อ: 28/07/2014 10:24 am

PostgreSQL : คำสั่ง SQL การใช้ UNION

โพสต์โดย thitikorn_lp » 26/09/2014 10:29 am

UNION (การรวมข้อมูล)

  UNION เป็นตัวดำเนินการที่ทำการรวมข้อมูลที่ได้จากการ SELECT ที่มีจำนวน 2 ชุดหรือมากกว่านั้นให้เป็นข้อมูลชุดเดียว

รูปแบบคำสั่ง :

โค้ด: เลือกทั้งหมด

SELECT คอลัมน์ที่ 1.1,คอลัมน์ที่ 1.2
FROM ตารางที่ 1
UNION
SELECT คอลัมน์ที่ 2.1,คอลัมน์ที่ 2.2
FROM ตารางที่ 2;

อธิบายคำสั่ง
คอลัมน์ที่ 1.1-1.2     :  คอลัมน์ที่ต้องการดึงข้อมูลมาแสดงของตารางที่ 1
คอลัมน์ที่ 2.1-2.2     :  คอลัมน์ที่ต้องการดึงข้อมูลมาแสดงของตารางที่ 2

โค้ด :

โค้ด: เลือกทั้งหมด

SELECT name , price_unit
FROM sale_order_line
UNION
SELECT name , price_unit
FROM z_sale_order
ORDER BY name

ผลที่ได้ :
ทำการดึงข้อมูลจากตาราง sale_order_line มา
2014-09-26_10-17-05.jpg
ภาพที่ 1 ข้อมูลจากตาราง sale_order_line
2014-09-26_10-17-05.jpg (98.49 KiB) เปิดดู 395 ครั้ง

เรียกข้อมูลจากตาราง z_sale_order (ข้อมูลดังกล่าวเป็นข้อมูลที่ยกตัวอย่างมาให้เห็นว่า ข้อมูลที่จะทำการ UNION ต้องเป็นข้อมูลประเภทที่คล้ายกัน)
2014-09-26_10-19-12.jpg
ภาพที่ 2 ข้อมูลจากตาราง z_sale_order (เป็นข้อมูลที่ยกตัวอย่างมาให้เห็นว่า ข้อมูลที่จะทำการ UNION ต้องเป็นข้อมูลประเภทที่คล้ายกัน)
2014-09-26_10-19-12.jpg (23.24 KiB) เปิดดู 395 ครั้ง

เมื่อทำการ UNION จะเห็นได้ว่า ข้อมูลทั้ง 2 ตารางจะมารวมกันอยู่ในหน้าเดียว
# สามารถใช้ ORDER BY ในการเรียงลำดับข้อมูลให้สวยงาม และ อ่านได้ง่าย
2014-09-26_10-16-09.jpg
ภาพที่ 3 ผลจากการ UNION
2014-09-26_10-16-09.jpg (110.17 KiB) เปิดดู 395 ครั้ง

หมายเหตุ :
* การ UNION สามารถรวมตารางประเภทอื่นเข้าด้วยกันได้ แต่ข้อมูลในตารางจะต้องเป็นข้อมูลที่มีความคล้ายคลึงกัน หรืกก็คือ ทั้ง 2 ตารางจะต้องมีคอลัมน์ที่มีชนิดของข้อมูลที่เข้ากันได้
** การ UNION มักจะใช้กับการรวมตารางประเภท รายงาน หรือ ระบบคลังสินค้า เป็นต้น
รูปภาพ

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 4 และ บุคคลทั่วไป 0 ท่าน