我有两个表:
我当前的代码给了charges_metadata中每个键的新行
SELECT m.id, m.amount, s.key, s.value
FROM charges AS m
INNER JOIN charges_metadata AS s ON m.id = s.charge_id
WHERE key IN ('Product', 'Plan Type', 'Payment Plan')
我想看的是:
+----------------+--------+---------+-----------+--------------+
| id | amount | Product | Plan Type | Payment Plan |
+----------------+--------+---------+-----------+--------------+
| 908asd7f098sa7 | 150 | T-shirt | Main | Monthly |
| 80as9d8f0as9d8 | 200 | Jeans | Regular | Yearly |
+----------------+--------+---------+-----------+--------------+
答案 0 :(得分:1)
您需要使用键来汇总值,这需要进行汇总:
SELECT
m.id,
m.amount,
MAX(CASE WHEN s.`key` = 'Product' THEN s.value END) AS Product,
MAX(CASE WHEN s.`key` = 'Plan Type' THEN s.value END) AS PlanType,
MAX(CASE WHEN s.`key` = 'Payment Plan' THEN s.value END) AS PaymentPlan
FROM charges m
INNER JOIN charges_metadata s
WHERE `key` IN ('Product', 'Plan Type', 'Payment Plan')
GROUP BY
m.id,
m.amount,
s.charge_id;