MYSQL查询用户订单,如果他们使用某个优惠券代码

时间:2015-10-19 20:38:19

标签: mysql

我试图找出使用折扣代码的用户是否在初始订单后订购了。

这三个表是:orderusercoupon_uses

coupon_uses开始,我检索的唯一数据是通过以下代码使用代码的用户:

SELECT *
FROM coupon_uses
WHERE coupon_id = 21921

我会收到一张表,其中包含用户ID,订单ID和他们使用的优惠券。

ID  Coupon_ID User_ID   Order_ID
11  21921     148871    1448181
21  21921     888381    1448191
31  21921     888411    1448201
41  21921     354311    1448211
51  21921     452671    1448221
61  21921     684791    1448231

现在,我需要检查在第一个查询中返回的用户(使用代码的人)与整个order表中的用户:

我试过这样的事情:

SELECT order.user_id,
COUNT(*) AS Total_Orders
FROM `order`
WHERE `order`.user_id = (
    SELECT user_id
    FROM coupon_uses
    WHERE coupon_id = 21921)
AND order.order_status != "Cancelled"
GROUP BY order.user_id ASC
ORDER BY `order`.orderplaced_ts

但我收到的Subquery返回的行数超过1行。

所需的结果将是返回用户ID列表,包括订单总数和订单日期。

User_ID   Total_Orders  Last_Order
148871    17            2015_01_01
888381    19            2015_01_01
888411    3             2015_01_14
354311    5             2015_05_01
452671    99            2015_02_01
684791    213           2015_01_05

感谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT o.user_id, COUNT(*) AS total_orders
FROM order AS o
INNER JOIN coupon_uses AS c ON o.user_id = c.user_id
WHERE c.coupon_id = 21921
GROUP BY o.user_id
ORDER BY MIN(o.orderplaced_ts)

这假设用户只能使用优惠券一次。