对于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字段中的一半数据。有什么方法可以解决这个问题吗?我没有线索。有人能指出我正确的方向吗?
亲切的问候。
答案 0 :(得分:1)
MySQL docs告诉您,GROUP_CONCAT()
输出的大小仅限于group_concat_max_len
系统变量的长度。这不止一次地困扰我。
答案 1 :(得分:1)
作为documented:
结果被截断为由。给出的最大长度 group_concat_max_len系统变量,其默认值为 1024.该值可以设置得更高,尽管返回值的有效最大长度受值的约束 max_allowed_packet的。更改值的语法 group_concat_max_len在运行时如下,其中val是一个 无符号整数:
SET [GLOBAL | SESSION] group_concat_max_len = val;
所以这里你是一个解决方法,尽管最好的最终解决方案是在从PHP读取时重写查询和组行。