各meta_keyが列であるテーブルで、meta_key、meta_valueのペアをどのように処理できますか?MySQLのWordpressはmeta_valueからデータを抽出します
背景:私は、Learnpress(Wordpress Plugin)で行われた購入ごとに、支払方法、数量、および2つの日付間の支払いを行ったユーザーを取得する必要があります。
Learnpressは購買を投稿として保管し、各購入の属性をwp_postmetaのmeta_key、meta_valueのペアとして保存します。 wp_postmetaは異なる列で異なる属性を持っていた場合、私はこのような何かができる:
SELECT attribute1, attribute2, attribute3 FROM wp_postmeta, wp_posts
WHERE wp_postmeta.post_id = wp_posts.ID;
しかし、各ポストはwp_postmetaでN行、属性ごとに1行があります。どのようにデータを結合することができるので、各行のすべての属性が行に含まれるテーブルを取得できますか?
例:
wp_postテーブル
ID (Other Columns)
1
2
3
wp_postmeta table:
ID post_id meta_key meta_value
1 1 user testuser1
2 1 payment_method paypal
3 1 quantity 25
(Other rows, with the same post_id, one for each attribute of this purchase)
4 2 user testuser2
5 2 payment_method credit_card
6 2 quantity 50
Desired Result:
Post_ID user payment_method quantity (Other attributes)
1 testuser1 paypal 25
2 testuser2 credit_card 50
注:一部の記事は、他の人よりも、それらに関連するより多くのpostmeta行を持っています。ポストメタに属性がない投稿は、最終的な表ではnullにする必要があります。
どうすればこのようなことが達成できますか? ありがとうございます。
魅力的な作品です。私は、このクエリを、必要なmeta_key属性を持つ一時テーブルを作成し、それを他のテーブルと結合するように修正しました。ありがとう! – Raul
@ラウル。良い。一時テーブルは正常ですが、不要です。サブクエリも同様に機能します。 – Strawberry