SELECT a.รหัสสินค้า, a.ชื่อสินค้า, IFNULL(SUM(a.จำนวนรับ), 0) - IFNULL(SUM(b.จำนวนขาย), 0) AS ยอดคงเหลือ
FROM table_in AS a
INNER JOIN table_out AS b
ON a.รหัสสินค้า = b.รหัสสินค้า
GROUP BY a.รหัสสินค้า, a.ชื่อสินค้า
[x] 1. ออกแบบตารางได้ไม่ค่อยดีนัก อทิเช่น ชื่อสินค้า มันไม่ควรจะมาอยู่ในตาราง table_in และ table_out
2. MySQL Function IFNULL() == SQL Server Function ISNULL()
วิธีแก้ไข เปลี่ยนจาก INNER JOIN เป็น FULL OUTER JOIN แต่โชคไม่ดีและพระเจ้าไม่เข้าข้าง MySQL ไม่มีคำสั่ง FULL OUTER JOIN (ของฟรีก็อย่างนี้แหละ)
แนวทางแก้ไข
FULL OUTER JOIN = (LEFT JOIN) UNION (RIGHT JOIN)
Date :
2014-02-21 07:24:21
By :
love9713
No. 4
Guest
ตัวอย่างที่ถูกต้อง SQL Server (สรุปว่า พระเจ้าไม่มีอยู่จริง)
Code (SQL)
SELECT a.รหัสสินค้า, a.ชื่อสินค้า, ISNULL(SUM(a.จำนวนรับ), 0) - ISNULL(SUM(b.จำนวนขาย), 0) AS ยอดคงเหลือ
FROM table_in AS a
FULL OUTER JOIN table_out AS b
ON a.รหัสสินค้า = b.รหัสสินค้า
GROUP BY COALESCE(a.รหัสสินค้า, b.รหัสสินค้า), COALESCE(a.ชื่อสินค้า, b.ชื่อสินค้า)
พระเจ้าคงไม่มีจริงครับ ผมใช้ Mysql
งั้นทางแก้ของผม ผมคงต้องเอา in กับ out ใส่ตารางเดียวกัน จำนวนรับ ให้เป็น + จำนวนขายให้เป็น -
จับมา sum เลย ง่ายกว่าเยอะ