2016-08-03 6 views
0

私はWordpressデータベース用のいくつかのSQLビューを作成して、WooCommerceプラグインを介して生成されたオンライン注文をより簡単に表示しようとしています。私はWooCommerceの構造に精通しています。データは保存されていますが、SQLの初心者であり、最後のハードルに悩まされています。SQL Select WooCommerceの注文アイテムとメタデータを取得するためのクエリ

私はこのリファレンスを使用して、すべての注文詳細の最初のビューを作成することができました:

http://codecharismatic.com/sql-script-to-get-all-woocommerce-orders-including-metadata/

今、私はこれらのオーダーのそれぞれの行項目の同様の図を作成する必要があります。次のように

wp_woocommerce_order_items私はwp_woocommerce_order_itemsテーブルからレコードの基本的なリストを作成することができました

wp_woocommerce_order_itemmeta:

SELECT order_item_id,order_item_name,order_item_type,order_id 
FROM ocm_woocommerce_order_items 
ORDER BY order_id 

これは返すためのアイテムの詳細を保存する2つのテーブルがあります。このようなレコードの素敵なリスト:

order_item_id order_item_name order_item_type order_id 
2 Widgets line_item 9 
3 Widgets line_item 10 
4 Widgets line_item 11 
5 Woo Logo line_item 473 
6 Woo Logo line_item 473 

私は今、追加を追加したいと思いますwp_woocommerce_order_itemmeta表の各行項目のすべての列を表示します。この表には、このような各品目のための複数のレコードが含まれています

meta_id order_item_id meta_key meta_value 
136 16 _qty 4 
137 16 _tax_class 
138 16 _product_id 87 
139 16 _variation_id 0 
140 16 _line_subtotal 36 
141 16 _line_total 36 
142 16 _line_subtotal_tax 3.6 
143 16 _line_tax 3.6 

私は私の出力は、で構成されますので、新しい列にこれらのそれぞれを変換したい:

order_item_id, order_item_name, order_item_type, order_id, qty, tax_class, product_id, variation_id, line_subtotal, line_total, line_subtotal_tax, line_tax 

私はわからないんだけどここで使用するSQL構文 - 私は上記のリンクに似た構文を使用しようとしましたが、これまで実際に正しい構文になっているかどうかはわかりませんでした。

答えて

5

私はこれを試行錯誤で解決することができました。最後に機能したクエリは次のとおりです。

select 
p.order_id, 
p.order_item_id, 
p.order_item_name, 
p.order_item_type, 
max(CASE WHEN pm.meta_key = '_product_id' and p.order_item_id = pm.order_item_id THEN pm.meta_value END) as productID, 
max(CASE WHEN pm.meta_key = '_qty' and p.order_item_id = pm.order_item_id THEN pm.meta_value END) as Qty, 
max(CASE WHEN pm.meta_key = '_variation_id' and p.order_item_id = pm.order_item_id THEN pm.meta_value END) as variationID, 
max(CASE WHEN pm.meta_key = '_line_total' and p.order_item_id = pm.order_item_id THEN pm.meta_value END) as lineTotal, 
max(CASE WHEN pm.meta_key = '_line_subtotal_tax' and p.order_item_id = pm.order_item_id THEN pm.meta_value END) as subTotalTax, 
max(CASE WHEN pm.meta_key = '_line_tax' and p.order_item_id = pm.order_item_id THEN pm.meta_value END) as Tax, 
max(CASE WHEN pm.meta_key = '_tax_class' and p.order_item_id = pm.order_item_id THEN pm.meta_value END) as taxClass, 
max(CASE WHEN pm.meta_key = '_line_subtotal' and p.order_item_id = pm.order_item_id THEN pm.meta_value END) as subtotal 
from 
ocm_woocommerce_order_items as p, 
ocm_woocommerce_order_itemmeta as pm 
where order_item_type = 'line_item' and 
p.order_item_id = pm.order_item_id 
group by 
p.order_item_id 
関連する問題