2013-03-07 73 views
0

为一个WordPress/Woocommerce网店我创建了一个枢轴视图中显示人象的命令:MySQL视图被显示出部分列数据

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 

只有一个小问题。 OrderItems(序列化字段)中的数据仅包含原始字段的一半数据。有什么方法可以解决这个问题吗?我没有任何线索。有人能指引我朝着正确的方向吗?

亲切的问候。

回答

1

作为documented

的结果被截断其具有 1024值可以设置高的默认值,该值是由 group_concat_max_len系统变量给定的最大长度,虽然有效返回值的最大长度受限于max_allowed_pa​​cket的值 。语法改变 在运行时group_concat_max_len值如下,其中val是一个 无符号整数:所以在这里

SET [GLOBAL | SESSION] group_concat_max_len = val; 

你是一个解决办法,但最好的最终解决办法是重写查询并从PHP读取时分组行。

1

MySQL docs告诉你,GROUP_CONCAT()输出的大小限制在group_concat_max_len系统变量的长度。这让我不止一次地咬伤了我。