如何在mysql数据库中记录该值?

时间:2019-04-21 16:07:43

标签: php mysql

我有一个看起来像这样的数据

"discountPrices": [
    {
      "startQuantity": 3,
      "price": 65.0
    },
    {
      "startQuantity": 8,
      "price": 62.0
    },

   {
      "startQuantity": 20,
      "price": 60.0
    },

  ]

如您所知,这是产品的折扣价。我想在这里实现两件事。

1。)我想创建一个名为Discountprice的表,该表将具有列,即price |最小数量最大数量。使用上面的数据,第一行将是65.00 |。 3 | 7,第二行为62.00 | 8 | 19和第三行将是60 | 20 | 1000。 我首先遇到的问题是,我不知道如何获取最大数量,因为数据不包含最大数量。它仅声明startQuantity。如何获得每一行的最大量并进行记录?

2。)如何在页面上输出。例如,使用数据,我可以做类似3> = 7 = $ 65.00,8> = 19 = $ 62.00,20> = 1000 = $ 60.00

我认为最困难的部分是如何知道最大数量,因为未指定最大数量。请问我怎样才能达到这个结果。

2 个答案:

答案 0 :(得分:1)

您不需要知道最大数量。只需按原样存储您的数据,并查询startQuantity小于或等于orderQuantity的第一行:

SELECT price FROM discounts
    WHERE startQuantity <= :orderQuantity
    ORDER BY startQuantity DESC
    LIMIT 1

例如,请参见here

如果找不到结果,那么就没有折扣,您的价格只是基本的未打折价格。 (或者,您也可以插入一行,其中包含基准价格,0代表startQuantity。)

请注意,我假设您要销售一种以上的产品,因此您可能需要在该表(以及相关的WHERE子句)中使用一个字段来标识哪种产品。

答案 1 :(得分:0)

您可以使用以下代码片段获取最大数量

$json = '[  
 {  
  "startQuantity":3,
  "price":65.0
 },
 {  
  "startQuantity":8,
  "price":62.0
 },
 {  
  "startQuantity":20,
  "price":60.0
 }
]';

$jsonToArray = json_decode($json, true);
$startQuantity = array_column($jsonToArray, 'startQuantity');
array_walk($jsonToArray, function($v, $k) use (&$jsonToArray, $startQuantity) {
    $index = array_search($v['startQuantity'], $startQuantity);
    if(array_key_exists($index+1, $startQuantity))
         $jsonToArray[$k]['endQuantity']  = $startQuantity[$index+1]-1;
});
print_r($jsonToArray);

结果

Array
(
[0] => Array
    (
        [startQuantity] => 3
        [price] => 65
        [endQuantity] => 7
    )

[1] => Array
    (
        [startQuantity] => 8
        [price] => 62
        [endQuantity] => 19
    )

[2] => Array
    (
        [startQuantity] => 20
        [price] => 60
    )

)