ほとんどの場合、詳細を取得するために直接クエリを実行する必要があります。レポートでは、必要に応じて合計をロールアップできます。支払いに関連付けられた生データを取得するには、次のようなものがあります
select
p.id,
p.name,
p.address,
p.orderNumber,
p.promoCode,
o.id as OrderID,
o.orderQuantity,
prod.sku,
prod.title,
prod.description,
prod.price
from
payments p
join order o
on p.orderNumber = o.orderNumber
join products prod
on o.productSku = prod.sku
コメントごとに、複数の列でシミュレートされたピボットを試行します-固定された列(元のクエリのエイリアスを「PQ」(プレクエリ)として使用しますが、具体的には注文 ID で並べ替えて、明細も一緒にします。
select
PQ.ID,
PQ.Name,
PQ.address,
PQ.orderNumber,
PQ.promoCode,
max( if( PQ.sku = 'umbrella1212', PQ.Price, 0.00 )) as Umbrella1212Price,
sum( if( PQ.sku = 'umbrella1212', PQ.OrderQuantity, 0.00 )) as Umbrella1212Qty,
max( if( PQ.sku = 'umbrella1010', PQ.Price, 0.00 )) as Umbrella1010Price,
sum( if( PQ.sku = 'umbrella1010', PQ.OrderQuantity, 0.00 )) as umbrella1010Qty,
max( if( PQ.sku = 'rainbootlg', PQ.Price, 0.00 )) as rainbootlgPrice,
sum( if( PQ.sku = 'rainbootlg', PQ.OrderQuantity, 0.00 )) as rainbootlgQty,
max( if( PQ.sku = 'rubFlrmts', PQ.Price, 0.00 )) as rubFlrmtsPrice,
sum( if( PQ.sku = 'rubFlrmts', PQ.OrderQuantity, 0.00 )) as rubFlrmtsQty,
sum( PQ.Price * PQ.OrderQuantity ) as OrderTotal
from
( select
p.id,
p.name,
p.address,
p.orderNumber,
p.promoCode,
o.id as OrderID,
o.orderQuantity,
prod.sku,
prod.title,
prod.description,
prod.price
from
payments p
join order o
on p.orderNumber = o.orderNumber
join products prod
on o.productSku = prod.sku
order by
p.id,
o.id ) PQ
group by
PQ.ID,
PQ.Name,
PQ.address,
PQ.orderNumber,
PQ.promoCode
名前/住所/注文番号/プロモーション コードは、関連付けられたすべての項目で同じ「注文番号」であるため、グループ化されます。そうしないと、MySQL は、列が集計関数 (sum、min、max、avg など) の一部ではないことに不満を抱く可能性があります。