Как создать простой упаковочный лист с MySQL? - PullRequest
0 голосов
/ 24 октября 2009

Мне нужна помощь о том, как создать упаковочный лист отгрузки с 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, в которой меня обучали в здесь . Как сделать этот результат?

Заранее спасибо. Стивен


Спасибо, Кай,

Но я бы хотел сгенерировать его командой 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 | 
+----------+------------+--------+-------+----------+-----------------+

1 Ответ

0 голосов
/ 24 октября 2009

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)
...