我怎样才能制作一个mysql来显示所有具有不同序列号和可用数量的特定产品。 请注意,我的客户没有存储数量的表, 我们拥有的是:
- received_purchase_order_detail
- received_transfer_order_detail
- transfer_order_detail
- official_receipt_detail
- ...还有更多表格... 这些是我们用来了解还有多少可用数量的表格。
可用数量=(received_purchase_order_detail+received_transfer_order_detail)-(transfer_order_detail+official_receipt_detail ....)
我已经有了 FuzzyTree 给出的查询,但它显示了按产品数量分组。
MySQL Group By Product Id BUT NOT Product that has a Serial Number
我现在需要的是查询具有不同序列号的产品id并显示每个可用数量。
而不是
Product_ID Product_Name Quantity_Available
6 Apple 100
7 Blender 2
8 Toaster 3
我需要
Product_ID Product_Name Serial_No Quantity_Available
6 Apple NULL 100
7 Blender b1 0
7 Blender b2 1
7 Blender b3 1
8 Toaster t1 1
8 Toaster t2 1
8 Toaster t3 1
--------
<小时/>我现在的测试sql问题: 我一直在将派生表与联合结合起来,并通过 s_product_serial 进行分组,以便它们分开。但我的查询显示了序列号 amount_available 为 0 的所有产品,就像它们正在跟踪第一个已售序列号产品的第一个数据..,仅售出了第一个序列号为 b1 的 blender ,但另一个 blender 应该仍然可用..
注意 我添加了联合查询,因为产品表没有serial_no列...,序列分散在不同的表上。所以我首先做的是联合表来收集完整的可用的serial_no。或者也许我以错误的方式处理这个问题?
问题
Product_ID Product_Name Serial_No Quantity_Available
6 Apple NULL 100
7 Blender b1 0
7 Blender b2 0
7 Blender b3 0
8 Toaster t1 0
8 Toaster t2 0
8 Toaster t3 0
SELECT tabletest1.i_p_id, tabletest1.s_product_serial, ( COALESCE(tabletest1.Product_Total,0) + COALESCE(table1.Product_Total,0) + COALESCE(table2.Product_Total,0) + COALESCE(table3.Product_Total,0) ) AS 'Total QTY Added', ( COALESCE(tabletest1.Product_Total,0) + COALESCE(table4.Product_Total,0) + COALESCE(table5.Product_Total,0) + COALESCE(table6.Product_Total,0) ) AS 'Total QTY Released', ( COALESCE(tabletest1.Product_Total,0) + COALESCE(table1.Product_Total,0) + COALESCE(table2.Product_Total,0) + COALESCE(table3.Product_Total,0) ) - ( COALESCE(tabletest1.Product_Total,0) + COALESCE(table4.Product_Total,0) + COALESCE(table5.Product_Total,0) + COALESCE(table6.Product_Total,0) ) AS 'Current Quantity Available' FROM ( ..union query.. ) AS tabletest1 LEFT JOIN ( derivedtable1.. ) AS table1 ON table1.i_p_id = tabletest1.i_p_id LEFT JOIN ( derivedtable2.. ) AS table2 ON table2.i_p_id = tabletest1.i_p_id LEFT JOIN ( derivedtable3.. ) AS table3 ON table3.i_p_id = tabletest1.i_p_id LEFT JOIN ( derivedtable4.. ) AS table4 ON table4.i_p_id = tabletest1.i_p_id LEFT JOIN ( derivedtable5.. ) AS table5 ON table5.i_p_id = tabletest1.i_p_id LEFT JOIN ( derivedtable6.. ) AS table6 ON table6.i_p_id = tabletest1.i_p_id GROUP BY i_p_id, s_product_serial
最佳答案
我想我明白了。
而不是 AS 表(n) ON 表(n).i_p_id = tabletest(n).i_p_id
它应该指的是序列 AS 表(n) ON 表(n).s_product_serial = tabletest(n).s_product_serial
现在它工作正常,但根据我的 sql 的长度,我想知道这是否有效?
关于php - MYSQL - 剩余数量 - 带序列号的产品 - 多表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24959812/