 |
sql ตางรางรับเข้ากับตารางขายออก คนละตางราง ตัดสต็กยังไงครับ |
|
 |
|
|
 |
 |
|
Code (SQL)
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()
GoodLuck
|
 |
 |
 |
 |
Date :
2014-02-21 06:57:47 |
By :
love9713 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตัวอย่างที่ถูกต้อง 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.ชื่อสินค้า)
[x] COALESCE(a.รหัสสินค้า, b.รหัสสินค้า) จะเขียนแบบนี้ก็ย่อมได้เช่นเดียวกัน ISNULL(a.รหัสสินค้า, b.รหัสสินค้า)
|
 |
 |
 |
 |
Date :
2014-02-21 07:39:05 |
By :
love9713 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พระเจ้าคงไม่มีจริงครับ ผมใช้ Mysql
งั้นทางแก้ของผม ผมคงต้องเอา in กับ out ใส่ตารางเดียวกัน จำนวนรับ ให้เป็น + จำนวนขายให้เป็น -
จับมา sum เลย ง่ายกว่าเยอะ
กะว่าจะแยกตารางให้ดูเป็นระเบียบซักหน่อย
""" [x] 1. ออกแบบตารางได้ไม่ค่อยดีนัก อทิเช่น ชื่อสินค้า มันไม่ควรจะมาอยู่ในตาราง table_in และ table_out """
ปกติผมก็ไม่ใส่ชื่อสินค้าในตารางครับ ผมแค่ยกตัวอย่างให้เห็นภาพสมบูรณ์ครับ
ขอบคุณครับที่แนะนำ
|
 |
 |
 |
 |
Date :
2014-02-21 09:02:31 |
By :
cles |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|