次のように私は、単純なSELECTステートメントを持っている:MySQL Select Query - ユースケースを使用するか結合するか?
select p.ID as order_id,
p.post_date,
max(CASE WHEN pm.meta_key = '_billing_email' and p.ID = pm.post_id
THEN pm.meta_value END) as billing_email,
max(CASE WHEN pm.meta_key = '_billing_first_name' and p.ID = pm.post_id
THEN pm.meta_value END) as _billing_first_name,
max(CASE WHEN pm.meta_key = '_billing_last_name' and p.ID = pm.post_id
THEN pm.meta_value END) as _billing_last_name,
max(CASE WHEN pm.meta_key = '_order_total' and p.ID = pm.post_id
THEN pm.meta_value END) as order_total,
max(CASE WHEN pm.meta_key = '_order_tax' and p.ID = pm.post_id
THEN pm.meta_value END) as order_tax,
max(CASE WHEN pm.meta_key = '_paid_date' and p.ID = pm.post_id
THEN pm.meta_value END) as paid_date
from wp_posts as p,
wp_postmeta as pm
where post_type = 'shop_order'
and p.ID = pm.post_id
and
and post_status = 'wc-completed'
group by p.ID
私は、JOIN構文を使用する必要があることが示唆されています - 私はWHEN CASEするのではなく、想定しています。私はJOINバージョンで作業を始めましたが、それほど冗長ではないようです - これが本当にベストプラクティスであり、処理するのがより効率的かどうか疑問に思っていますか?
私はSQLに慣れていないので、このように間違った方法をとっている可能性があるので、JOINを使用してこれを書き直す方法の例を見たいと思っています。あなたは最大で(p.post_dateを)p.post_dateを交換する必要があるかもしれません
データをピボットしています。ピボット '条件付き集約'(あなたの現在のメソッド)はかなり妥当です。誰があなたにデータをピボットするために 'Join'を使うよう提案したのかは不明です。あなたのクエリで改善できるのは、 'INNER JOIN'構文を使用して'カンマ区切り結合 'を使用するのではなく、2つのテーブルを結合することだけです。 –
あなたは何をしたいですか? –