【发布时间】:2014-09-17 13:10:49
【问题描述】:
如何制作一个 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 问题: 我一直在将派生表与 union 结合起来,并通过 s_product_serial 组将它们分开。但是我的查询显示所有序列数量为 0 的产品,就像他们正在跟踪第一个产品的第一个数据,序列号已售出..,只有第一个带有 b1 序列的搅拌机被出售,但另一个搅拌机应该仍然可用..
注意 我添加了一个联合查询,因为 products 表没有 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
选择
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)
) 作为“添加的总数量”,
(
COALESCE(tabletest1.Product_Total,0) +
COALESCE(table4.Product_Total,0) +
COALESCE(table5.Product_Total,0) +
COALESCE(table6.Product_Total,0)
) 作为“已发布的总数量”,
(
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 '当前可用数量'
从
(
..联合查询..
)
作为表测试1
左连接
(
派生表1..
)
AS table1 ON table1.i_p_id = tabletest1.i_p_id
左连接
(
派生表2..
)
AS table2 ON table2.i_p_id = tabletest1.i_p_id
左连接
(
派生表3..
)
AS table3 ON table3.i_p_id = tabletest1.i_p_id
左连接
(
派生表4..
)
AS table4 ON table4.i_p_id = tabletest1.i_p_id
左连接
(
派生表5..
)
AS table5 ON table5.i_p_id = tabletest1.i_p_id
左连接
(
派生表6..
)
AS table6 ON table6.i_p_id = tabletest1.i_p_id
通过...分组
i_p_id,
s_product_serial
【问题讨论】:
-
这个问题似乎离题了,因为 Stackoverflow 不是代码创建社区。描述您尝试过的方法以及错误的地方
-
@DarylGill,对不起,我忘了粘贴我的测试 sql。它也很长。请检查已编辑的帖子
-
哇。那一定是某种记录。
-
神圣的地狱。从移动设备调试的内容很多
-
请编辑问题并显示可生成指定结果的示例数据。