我们有一个"交易"表,记录了我们网站上发生的各种事件。其中一个特别需要在其上运行夜间"清理"过程。这是我的专栏(简化):
id, txName, brandName, visitorID, txDate
以下是我想检索的内容(散文):
"读取"
txName's
来自在过去 6 周内(基于txDate
)未记录特定brandName
的"读取"txName
vistiorID's
。 完全有可能(并且很可能)visitorID
在 6 周窗口内brandName
txName's
"读取"以上。我们只有 5 个brandName's
所以我完全满足于为单个brandName
构建一个流程并重复 5 次。
我的大脑只能做 2 个 MySQL SELECT 查询(6 周之前的记录,6 周内的记录),然后循环浏览两组几次以获得必须处理的最终记录数组。但我确信有一种我只是不明白的更有效的方法。
我希望这是有道理的...谢谢任何可以提供帮助的人。我认为真正让我感到困惑的部分是试图选择没有记录交易的人,而不是那些有记录
你可以尝试这样的事情:
SELECT DISTINCT(visitorID)
FROM transactions
WHERE txName = "READ"
AND txDate <= '$6weeksago'
GROUP BY brandName
其中$6weeksago
是在 PHP 中创建的变量,用于表示所需格式(not sure if it was a date or Unix timestamp)
的 6 周截止时间。
我没有测试过这个,因为我没有桌子,但我认为这就是你所追求的!