MySQL 计算两个日期之间的差异,但有一些变化

标签 mysql sql join datediff

我有 2 个表:ProductUser

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/

相关文章:

sql - 如何在 golang 应用程序中创建具有多个 JSON 参数的 SQL 查询?

sql - SQL概念LEFT OUTER JOIN和WHERE NOT EXISTS基本一样吗?

php - 我的架构与我的数据库不同

php - 我如何在codeigniter中调用动态页面内容

C# 动态 SQL INSERT ... SELECT

Mysql查找结果不存在于jointable中

mysql - 3 表 JOIN 与 group by 不起作用

MYSQL按组加权平均

php - 存储在服务器上上传的图像的路径

php - 为什么wpdb插入sql显示错误?