0

对于 Wordpress/Woocommerce 网上商店,我创建了一个透视视图,显示所有订单,例如:

CREATE VIEW vwOrderPivot AS
SELECT  
    PM.post_id,
        GROUP_CONCAT(IF(PM.meta_key = '_billing_first_name',PM.meta_value,NULL)) AS FirstName,
        GROUP_CONCAT(IF(PM.meta_key = '_billing_last_name',PM.meta_value,NULL)) AS LastName,
        GROUP_CONCAT(IF(PM.meta_key = '_billing_address_1',PM.meta_value,NULL)) AS Address,
        GROUP_CONCAT(IF(PM.meta_key = '_billing_postcode',PM.meta_value,NULL)) AS Postcode,
        GROUP_CONCAT(IF(PM.meta_key = '_billing_phone',PM.meta_value,NULL)) AS Phone,
        GROUP_CONCAT(IF(PM.meta_key = '_order_total',PM.meta_value,NULL)) AS OrderTotal,
        GROUP_CONCAT(IF(PM.meta_key = '_pickup_location',PM.meta_value,NULL)) AS PickupLocation,
        GROUP_CONCAT(IF(PM.meta_key = '_pickup_time',PM.meta_value,NULL)) AS PickupTime,
        GROUP_CONCAT(IF(PM.meta_key = '_order_items',PM.meta_value,NULL)) AS OrderItems
FROM    goe_postmeta AS PM
GROUP BY PM.post_id

只有一个小问题。de OrderItems(序列化字段)中的数据仅包含 Original 字段中的一半数据。有什么办法可以解决这个问题吗?我没有线索。有人可以指出我正确的方向吗?

亲切的问候。

4

2 回答 2

1

MySQL 文档告诉你,GROUP_CONCAT()输出的大小受限于group_concat_max_len系统变量的长度。这不止一次地咬了我。

于 2013-03-07T09:00:41.917 回答
1

记载

结果被截断为由 group_concat_max_len 系统变量给出的最大长度,其默认值为 1024。该值可以设置得更高,尽管返回值的有效最大长度受 max_allowed_pa​​cket 值的限制。在运行时更改 group_concat_max_len 值的语法如下,其中 val 是无符号整数:

SET [GLOBAL | SESSION] group_concat_max_len = val;

所以在这里你是一个解决方法,尽管最好的最终解决方案是在从 PHP 读取时重写查询和分组行。

于 2013-03-07T09:00:47.897 回答