这就是我的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
首先,我如何使用第一行的数量字段?因为数量是3,我需要列出products_id 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;
}
答案 0 :(得分:0)
要获得购物篮数量,您必须选择它。如果产品ID的第一部分存储在单独的列中,而不是像子串一样进行杂乱的操作,那将是最好的。
查询1: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 56:3121fefbe6043d6fc12e3b3de2c8fc38
的3行数据,那么你必须知道生成行的方法。在没有方便的SQL支持的情况下,它们真的很痛苦(这么多,你最好在PHP中用数量选择一行,然后在客户端生成适当数量的行(PHP) )代码)。我将假设这些查询的某些变体将为您提供所需的信息。