php - MYSQL - 获取用户和最近的购买数据

标签 php mysql sql database

我正在尝试执行 MYSQL 查询,获取用户最近的购买情况,然后查看是否符合特定条件。这是我整理的查询:

select
    users_purch.purch_date as purchase_date,
    users_purch.total_amount as purchase_amount,
    users.* 
from
    users 
left join
    (
        select
            max(date) as purch_date,
            user_id,
            total_amount 
        from
            users_purchases 
        group by
            user_id
    ) as users_purch 
        on users_purch.user_id = users.id 
where
    users_purch.purch_date < '2016-11-01' 
    and users_purch.total_cost < 112.49 
order by
    users_purch.purch_date desc

查询似乎有效,但在某些方面失败。例如,如果用户有多个购买条目,则它会获取最大日期,但查询检索到的 Total_cost 金额与最大日期不在同一行。如何重写此查询以提供最新的完整购买记录?

谢谢!

最佳答案

您必须再次加入 user_purchases 表才能获取有关日期的信息:

select
    users_purch.purch_date as purchase_date,
    users_purch.total_amount as purchase_amount,
    users.* 
from
    users 
left join
    (
        select
            max(date) as purch_date,
            user_id
        from
            users_purchases 
        group by
            user_id
    ) as users_purch 
        on users_purch.user_id = users.id 
left join
   (
       select
          user_id,
          date,
          total_amount
       from
          users_purchases
   ) as users_purch2 on users_purch.user_id = users_purch2.user_id and
        users_purch2.date = users_purch.purch_date
where
    users_purch.purch_date < '2016-11-01' 
    and users_purch.total_cost < 112.49 
order by
    users_purch.purch_date desc

关于php - MYSQL - 获取用户和最近的购买数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43200010/

相关文章:

java - 如何为具有复合主键和外键的 oneToMany 关系创建 Hibernate 映射文件?

asp.net - 英镑符号 (£) 从 ASP.NET 字符串中消失

php - 在php中获取上一页的URL

php - 即使更新 php.ini 也会出现内存不足的情况

mysql - 计算三个连接未给出正确结果的次数

sql - 我可以在 'insert ... on duplicate update ...' 语句中重用绑定(bind)变量吗?

PHP 从字符串中获取整数

php - Prestashop 1.6 中自定义模块的 URL 链接

SQL Server 查询 : Using JOIN to include NULL values

php - 将韩语字符插入mysql