0

这是我的customers_basket桌子的样子:

customers_id | products_id                         | basket_quantity
3            | 56:3121fefbe6043d6fc12e3b3de2c8fc38 | 3
3            | 56:fb4c9278fcfe6225b58c06711a7e62ef | 1
3            | 56:8e334fce09556108f5416e27154b6c27 | 1
3            | 52:f3b9f38e4ddd18035bc04cd264b0f052 | 1

这是我正在使用的查询:

$products_in_cart_query = "SELECT products_id FROM customers_basket WHERE customers_id = " . $_SESSION['customer_id'] ."";
$products_in_cart       = $db->Execute($products_in_cart_query);
$products_in_cart_model = $products_in_cart->fields['products_id'];
$products_in_cart_model = substr($products_in_cart_model, 0, strpos($products_in_cart_model, ":"));

我得到的最终结果是 56,56,56,52

首先,如何使用第一行的数量字段?我需要列出 products_id 3 次,因为数量是 3。因此,最终结果需要是:56,56,56,56,56,52 或者,为了更容易理解 (56,56,56),56, 56,52

其次,我如何计算我有多少相同的值?在这种情况下,我有 5x56 和 1x52。我需要在我的进一步计算中使用这些计数。

编辑:进一步的计算解释了我需要知道每个 product_id 我有多少,然后运行这样的东西:

foreach(product_id) {
    $shipping_cost += FIXED_VALUE * basket_qty;
}
4

1 回答 1

0

要获得篮子数量,您必须选择它。最好将产品 ID 的第一部分存储在单独的列中,而不必进行诸如子字符串化之类的杂乱操作。

查询一:2位代码及对应数量

SELECT SUBSTR(products_id, 1, 2) AS product_code, basket_quantity
  FROM Customers_Basket
 WHERE customers_id = 3;

查询 2:2 字符代码和总数量

SELECT product_code, SUM(basket_quantity) AS total_quantity
  FROM (SELECT SUBSTR(products_id, 1, 2) AS product_code, basket_quantity
          FROM Customers_Basket
         WHERE customers_id = 3
       )
 GROUP BY product_code;

如果您真的非常非常非常想要产品 ID 的 3 行数据56:3121fefbe6043d6fc12e3b3de2c8fc38,那么您必须知道生成行的方法。在没有方便的 SQL 支持的情况下,它们真的很痛苦(如此之多,您最好在 PHP 中选择一行与数量,然后在客户端的数组中生成适当数量的行(PHP ) 代码)。我将假设这些查询的一些变化将为您提供所需的信息。

于 2013-01-05T01:59:14.457 回答