如何基于跨两个表的数学运算对条件执行 MySQL JOIN?
Posted
技术标签:
【中文标题】如何基于跨两个表的数学运算对条件执行 MySQL JOIN?【英文标题】:How do I do a MySQL JOIN on conditions based on mathematical operations across two tables? 【发布时间】:2021-03-03 05:05:08 【问题描述】:我正在尝试构建的 CRM 应用程序中有两个表。
“联系人”表:
id | Name | ContactFrequency (in days) |
---|---|---|
1 | John | 7 |
2 | Pete | 30 |
“事件”表:
id | Contacts_id | Description | Unix_Timestamp |
---|---|---|---|
1 | 1 | Sent John an email | 1609667504 |
2 | 1 | Gave John a call | 1609645455 |
1 | 2 | Sent Pete a letterl | 1609666755 |
“联系频率”是我应该多久致电该客户以保持联系。 Events 中的每个条目都是带有 UNIX 时间戳的呼叫日志。我想生成一个客户列表,这些客户需要在接下来的 X 天中被调用(或者他们的下一个联系人已经过去并且已经过期),例如以下(在我的示例中时间戳是完全任意的):
Client | Next Contact Due on (Timestamp)(Ordered by this column) |
---|---|
Pete | 1609645352 |
John | 1609634342 |
我将如何使用查询来执行此操作?我无法绕开它。
【问题讨论】:
【参考方案1】:正式地:
SELECT Contacts.Name Client,
COALESCE(FROM_UNIXTIME(MAX(Events.Unix_Timestamp)) + INTERVAL Contacts.ContactFrequency DAY, CURRENT_TIMESTAMP) NextContactDueOn
FROM Contacts
LEFT JOIN Events ON Contacts.id = Events.Contacts_id
GROUP BY Client
ORDER BY NextContactDueOn DESC
【讨论】:
以上是关于如何基于跨两个表的数学运算对条件执行 MySQL JOIN?的主要内容,如果未能解决你的问题,请参考以下文章