2009-10-24 17 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)