我有 2 个表:Product
、User
。
Product:
Date(Datetime)
Phone_Number(Number).
User:
Date (Datetime)
Phone_Number(Number)
Type(Value of N or C).
将新用户添加到User
表中时,系统会为其提供日期、电话号码和值“N”(N 表示新用户)。
当用户被取消时,会得到一个日期、电话号码和“C”值(C 代表取消)。
使用 MySQL,我需要找出用户创建日期和用户取消日期之间的日期差异,以及他们是否有产品(可以通过电话号码将用户与产品匹配)之间的日期创建和取消日期。
任何帮助将不胜感激,因为我的查询编写并不糟糕,但我无法解决。
谢谢。
最佳答案
您需要首先自连接用户表来查找创建和取消日期。然后连接到 Product 表以查看是否有任何内容。
SELECT u.Phone_Number, u.Created, u.Cancelled, p.Date as 'ProductDate'
FROM (
SELECT u1.Phone_Number, u1.Date as 'Created', u2.Date as 'Cancelled'
FROM User u1
JOIN User u2 on u1.Phone_Number=u2.Phone_Number
WHERE u1.Type = 'N'
and u2.Type = 'C'
) u
LEFT JOIN Product p on u.Phone_Number = p.Phone_Number
and p.Date between u.Created and u.Cancelled
关于MySQL 计算两个日期之间的差异,但有一些变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12393216/