2009-10-24 16 views
0

我需要关于如何使用MySQL创建装运清单的帮助。如何用MySQL生成简单的装箱单?

比方说,我有32箱键盘准备发货,主纸箱可以包含12个盒子。

我只有值32框和12的音量。下面的结果中的其他值是由sql命令生成的。不是来自记录。

因此,这很容易计算,主纸箱的数量将是3个主纸箱,其中一个作为非标准数量。如何对此执行查询?

因为我想是这样的结果:

+----------+---------------+-------------------+--------+------------+---------+ 
| Quantity | Standard_Qty | Non_Standard_Qty | Box_N | Box_Total | RowType | 
+----------+---------------+-------------------+--------+------------+---------+ 
|  12 |    1 |     0 |  1 |   3 | Detail | 
|  12 |    1 |     0 |  2 |   3 | Detail | 
|  8 |    0 |     1 |  3 |   3 | Detail | 
|  32 |    2 |     1 |  |   | Summary | 
+----------+---------------+-------------------+--------+------------+---------+ 

它看起来像两个查询我知道,也许使用FLOOR命令,其中我在here教。如何做出这个结果?

在此先感谢。 斯蒂芬


感谢凯,

,但我想通过SQL命令生成它,而不是由客户端编程。 我像这样堆在中间。这不是一个完整的列, 我打算在我的原始文章。

mysql> SELECT 
    -> art_name, 
    -> color_code, 
    -> volume, 
    -> SUM(quantity) AS total, 
    -> FLOOR(SUM(quantity)/volume) as boxes_sq, 
    -> (SUM(quantity) % volume) as box_nsq_contain 
    -> FROM order_main 
    -> WHERE order_main_id = "11" 
+----------+------------+--------+-------+----------+-----------------+ 
| art_name | color_code | volume | total | boxes_sq | box_nsq_contain | 
+----------+------------+--------+-------+----------+-----------------+ 
| KEYBOA | CAR  |  12 |  5 |  0 |    5 | 
| KEYBOA | CAR  |  12 |  9 |  0 |    9 | 
| KEYBOA | CAR  |  12 | 15 |  1 |    3 | 
| KEYBOA | CAR  |  12 | 20 |  1 |    8 | 
| KEYBOA | CAR  |  12 | 12 |  1 |    0 | 
| KEYBOA | CAR  |  12 |  6 |  0 |    6 | 
| KEYBOA | CAR  |  12 |  3 |  0 |    3 | 
| KEYBOA | CSM  |  12 |  5 |  0 |    5 | 
| KEYBOA | CSM  |  12 |  9 |  0 |    9 | 
| KEYBOA | CSM  |  12 | 17 |  1 |    5 | 
| KEYBOA | CSM  |  12 | 21 |  1 |    9 | 
| KEYBOA | CSM  |  12 | 14 |  1 |    2 | 
| KEYBOA | CSM  |  12 |  6 |  0 |    6 | 
| KEYBOA | CSM  |  12 |  3 |  0 |    3 | 
+----------+------------+--------+-------+----------+-----------------+ 

回答

0

SQL并未针对处理数据进行优化,与检索和存储数据一样多。出于这个原因,你得到的答案会相对复杂(我想)。更简单的是用你正在执行SQL查询的任何语言来处理它。伪代码可能看起来像这样:

int num_keyboards = SELECT COUNT(*) FROM keyboards 

int num_standard_packages = num_keyboards/12 
int keyboards_in_non_standard_package = num_keyboards % 12 (if 0 then discard)