we have a "transactions" table that开发者_StackOverflow's recording a variety of events happening on our website. One in particular needs a nightly "cleanup" process run on it. Here's my columns (simplified):
id, txName, brandName, visitorID, txDate
Here's what I want to retrieve (in prose):
"READ"
txName'sfromvistiorID'sthat haven't recorded a "READ"txNamein the last 6 weeks (based ontxDate) for a particularbrandName. It's entirely possible (and likely) thatvisitorIDwill have "READ"txName'sfor more than onebrandNameduring the 6 week window. We only have 5brandName'sso I'm totally content building a process for a singlebrandNameand repeating it 5 times.
My brain can only stretch as far as doing 2 MySQL SELECT queries (records prior to 6 weeks, records within 6 weeks), then looping through the two sets a few times to get an array of final records that have to be processed. But I'm sure there's a WAAAAY more efficient way that I just don't understand.
I hope this makes sense...thank you anybody that can help. I think the part that's really messing me up is trying to select people who haven't logged a transaction, versus those who have
You could try something like:
SELECT DISTINCT(visitorID)
FROM transactions
WHERE txName = "READ"
AND txDate <= '$6weeksago'
GROUP BY brandName
Where $6weeksago is a variable created in PHP to represent the time of the 6 week cut off in the required format (not sure if it was a date or Unix timestamp).
I haven't tested this as I don't have the table, but I think it is what you are after!
加载中,请稍侯......
精彩评论