เทคนิคการสรุปข้อมูลสต๊อกสินค้า ด้วยคำสั่ง SQL

ตารางสต๊อกเก็บข้อมูลสต๊อกสินค้าตามรูป เราจะมาดูการเขียนคำสั่ง SQL เพื่อสรุปข้อมูลสต๊อกสินค้าปัจจุบันกัน
ปกติแล้วคำสั่ง SUM() ของ SQL ใช้ในการบวกข้อมูลเข้าด้วยกัน แต่เนื่องจากในการเก็บสต๊อกของสินค้า เราจะต้องลบจำนวนสินค้าในสต๊อกด้วยข้อมูลขาออก (OUT)

ชึ่งเทคนิคในการลบข้อมูลด้วย SUM() สามารถทำได้ง่ายๆด้วยการคูณข้อมูลตัวที่ต้องการลบด้วย -1 ครับ ดูตัวอย่างในโค้ดเลย
SELECT `product_id`,SUM(`quantity`) AS `quantity` FROM (
  (SELECT `product_id`,`quantity` FROM `app_stock` WHERE `status` = 'IN')
  UNION ALL
  (SELECT `product_id`,`quantity` * -1 AS `quantity` FROM `app_stock` WHERE `status` = 'OUT')
) AS Q GROUP BY `product_id`

ผลลัพท์ของ Query ด้านบน
มีเพื่อนสมาชิกเสนอมาอีกวิธี
SELECT `product_id`,SUM( IF(`status`='IN', `quantity`, `quantity`*-1) ) AS `quantity`
FROM `app_stock`
GROUP BY `product_id`

ซึ่งจากการที่ผมลองทดสอบดู พบว่าแบบหลังสามารถทำงานได้เร็วกว่าเล็กน้อยครับ
ผู้เขียน goragod โพสต์เมื่อ 17 ก.ย. 2560 เปิดดู 12,987 ป้ายกำกับ SQL
^