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

少しだけ問題があります。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 に答える