2017-08-08 8 views
-1

トピックをピボットテーブルとして持つディスカッションを読む私は解決策を得られませんでしたので、今回はこの問題を解決することを願っています。行から列への変換のためのクエリが機能しません

ようだ私は、これらの列私は他の類似の記事で示唆したように、頻繁に

Post_ID | sku  | price  | 
--------|----------|-----------| 
001  | a00b | 200  | 
002  | b001 | 120  | 

それを更新する可能性がこのように再編成するだろう

Post_ID | meta_key | meta value| 
--------|----------|-----------| 
001  | sku  | a00b  | 
001  | price | 200  | 
002  | sku  | b001  | 
002  | price | 120  | 

とテーブルmg_postmetaを持っています解決策は、ピボットテーブルを持つことであり、私は自分のフィールドに応じて変更した次のクエリを提供しました:

SELECT 
    post_id, 
    SUM(mg_postmeta.meta_key = '_store')AS SKU, 
    SUM(mg_postmeta.meta_key = '_regular_price')AS RegPrice 

FROM mg_postmeta 

WHERE post_id=13229 

GROUP BY post_id 

結果として、期待値があるのではなく、SKUで1、RegPriceで0が予想された結果ではありません。

さらに頻繁に更新するため、最適な解決策は何ですか?クエリ、ビューまたはテーブル?

はあなたに

+0

https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- sql-query – Strawberry

+0

非常に参考にしていただきありがとうございます。 – Alex

答えて

0

に感謝し、これは期待されたまさに発生

SELECT p.ID, p.post_title, 
    MAX(CASE WHEN pm1.meta_key = '_price' then pm1.meta_value ELSE NULL END) as price, 
    MAX(CASE WHEN pm1.meta_key = '_sku' then pm1.meta_value ELSE NULL END) as sku 
FROM mg_posts p LEFT JOIN mg_postmeta pm1 ON (pm1.post_id = p.ID)     
WHERE p.post_type in('product', 'product_variation') AND p.post_status = 'publish' 
GROUP BY p.ID, p.post_title 

いくつかのテストの後に私が得たソリューションです。

関連する問題