【发布时间】:2015-04-19 11:36:00
【问题描述】:
我需要在 MySql 数据库中查询客户数据。
我有客户表、订单和连接表。
我需要找到最后一次访问 - MAX(connection.date_add)
还有订单的总和。
我厌倦了一次查询 -
select MAX( connection.date_add), SUM(order.total_paid)
from customer
join order on customer.id = order.c_id
join connection on customer.id = connection.c_id
问题是结果每个连接1行,订单数乘以连接数
我通过执行 3 次查询来解决它,然后“手动”合并结果
我的问题:是否可以在一个查询中完成?
我知道在其他 SQL 数据库中您可以使用 WITH 语句,但是在 MySql 中是否有一种简单的方法可以在一个查询中做到这一点?
无法添加答案 - 所以这是解决方案 -
SELECT c.id_customer,
COUNT(DISTINCT o.id_order ) AS '# VALID ORDERS',
MAX( co.`date_add` ) AS last_visit,
SUM( o.total_paid )*COUNT(DISTINCT o.id_order )/COUNT(co.`date_add` ) AS '$ (TOTAL AMOUNT)'
FROM ps_customer AS c
JOIN ps_orders o ON ( c.id_customer = o.id_customer )
JOIN ps_connections co ON co.id_customer = g.id_customer
group by c.id_customer
内部子查询的解决方案也可以,但是太慢了。
Stackoverflow - 这不是重复的,请仔细阅读。
【问题讨论】:
-
请使用示例数据和所需结果编辑您的问题。您想要每个客户一排还是整体一排?
标签: mysql