เทคนิคการสรุปข้อมูลสต๊อกสินค้า ด้วยคำสั่ง SQL
ชึ่งเทคนิคในการลบข้อมูลด้วย 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`
ซึ่งจากการที่ผมลองทดสอบดู พบว่าแบบหลังสามารถทำงานได้เร็วกว่าเล็กน้อยครับ