我正在查询Wordpress postmeta表,试图通过客户提取一些销售信息。如何将客户组合在一起。这里的挑战是所有数据都在postmeta表中。
到目前为止,我的尝试失败了:
SELECT CONCAT_WS(" ", metaA.meta_value, metaB.meta_value) AS customer_name, metaC.meta_value AS 'Total'
FROM wp_postmeta AS metaA
JOIN wp_postmeta AS metaB USING (post_id)
JOIN wp_postmeta AS metaC USING (post_id)
WHERE (metaA.meta_key = '_billing_first_name')
AND (metaB.meta_key = '_billing_last_name')
AND (metaC.meta_key = '_order_total')
GROUP BY metaA.meta_value, metaB.meta_value, metaC.meta_value
结果:
+---------------+---------+
| customer_name | Total |
+---------------+---------+
| customer1 | 10 |
| customer1 | 50 |
| customer1 | 90 |
| customer2 | 40 |
| customer3 | 10 |
| customer3 | 10 |
| customer4 | 20 |
+---------------+---------+
我想得到:
+---------------+---------+
| customer_name | Total |
+---------------+---------+
| customer1 | 150 |
| customer2 | 40 |
| customer3 | 20 |
| customer4 | 20 |
+---------------+---------+
答案 0 :(得分:2)
您需要按连接的客户名称进行分组并对metaC.meta_value求和:
SELECT CONCAT_WS(" ", metaA.meta_value, metaB.meta_value) AS customer_name, sum(metaC.meta_value) AS 'Total'
FROM wp_postmeta AS metaA
JOIN wp_postmeta AS metaB USING (post_id)
JOIN wp_postmeta AS metaC USING (post_id)
WHERE (metaA.meta_key = '_billing_first_name')
AND (metaB.meta_key = '_billing_last_name')
AND (metaC.meta_key = '_order_total')
GROUP BY CONCAT_WS(" ", metaA.meta_value, metaB.meta_value)
答案 1 :(得分:1)
这个怎么样?
map
答案 2 :(得分:1)
试试这个。
SELECT customer_name, sum(total) as total from
(SELECT CONCAT_WS(" ", metaA.meta_value, metaB.meta_value) AS customer_name, metaC.meta_value AS 'Total'
FROM wp_postmeta AS metaA
JOIN wp_postmeta AS metaB USING (post_id)
JOIN wp_postmeta AS metaC USING (post_id)
WHERE (metaA.meta_key = '_billing_first_name')
AND (metaB.meta_key = '_billing_last_name')
AND (metaC.meta_key = '_order_total')
GROUP BY metaA.meta_value, metaB.meta_value, metaC.meta_value) t
Group by customer_name
答案 3 :(得分:-1)
以下脚本适合您:
SELECT customer_name, sum(total_order) from
(
SELECT CONCAT_WS(" ", metaA.meta_value, metaB.meta_value) AS customer_name, metaC.meta_value AS total_order
FROM wp_postmeta AS metaA
JOIN wp_postmeta AS metaB USING (post_id)
JOIN wp_postmeta AS metaC USING (post_id)
WHERE (metaA.meta_key = '_billing_first_name')
AND (metaB.meta_key = '_billing_last_name')
AND (metaC.meta_key = '_order_total')
)
group by customer_name