我有這個 SQL 查詢
SELECT id, meta_key, meta_value,
FROM wp_posts post
INNER JOIN wp_postmeta meta
ON post.ID = meta.POST_ID
WHERE post.post_status = 'publish'
AND ( meta.meta_key = 'brand' OR meta.meta_key = 'price' )
結果是這樣的
id --|-- meta_key --|-- meta_value
-----------------------------------
42 --|-- brand --|-- mercedes
44 --|-- brand --|-- honda
46 --|-- brand --|-- honda
42 --|-- price --|-- 20
44 --|-- price --|-- 20
46 --|-- price --|-- 50
我怎樣才能達到這樣的結果?
brand --|-- UNIQUE ID COUNT --|-- Total price sum of IDs relating to brand
----------------------------------------------
honda --|------- 2 ----------|-- 70
mercedes|------- 1 ----------|-- 20
我確實嘗試為品牌和價格設定另一個結果列,但仍然不太確定如何對結果進行分組
SELECT id, meta_key, meta_value,
(CASE WHEN meta_key = 'brand' THEN meta_value END) as brand,
(CASE WHEN meta_key = 'price' THEN meta_value END) as price
FROM wp_posts post
INNER JOIN wp_postmeta meta
ON post.ID = meta.POST_ID
WHERE post.post_status = 'publish'
AND ( meta.meta_key = 'brand' OR meta.meta_key = 'price' )
導致這個
id --|-- meta_key --|-- meta_value --|-- brand --|-- Price
--------------------------------------------------------------
42 --|-- brand --|-- mercedes --|-- mercedes |-- NULL
44 --|-- brand --|-- honda --|-- honda --|-- NULL
46 --|-- brand --|-- honda --|-- honda --|-- NULL
42 --|-- price --|-- 20 --|-- NULL --|-- 20
44 --|-- price --|-- 20 --|-- NULL --|-- 20
46 --|-- price --|-- 50 --|-- NULL --|-- 50
感謝任何幫助
uj5u.com熱心網友回復:
將您的單個連接更改wp_postmeta為兩個單獨的連接,一個用于品牌,一個用于價格:
select brands.meta_value brand
, count(distinct posts.id) unique_id_count
, sum(price.meta_value) price
from wp_posts posts
inner join wp_postmeta brands
on posts.id = brands.post_id
and brands.meta_key = 'brand'
inner join wp_postmeta price
on posts.id = price.post_id
and price.meta_key = 'price'
WHERE posts.post_status = 'publish'
group by brands.meta_value
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/507709.html
上一篇:列不包含的重復行
