2016-11-15 58 views
1

我有一個長形式的PHP函數來遍歷我的所有用戶並測試其活動狀態。它很慢並且需要多個操作......這個SQL操作速度要快得多,但現在我的計數不匹配。爲活動用戶更新龐大的mySQL查詢

我需要更新這個mySQL查詢來完成1個加法和1個調整。這樣它就模仿了測試用戶活動的確切行爲/功能。

"SELECT DISTINCT last.user_id 
FROM ss_usermeta as last 
JOIN ss_usermeta as next on last.user_id = next.user_id 
WHERE last.meta_key = 'last_trans_date' and last.meta_value <= CURDATE() 
and next.meta_key = 'next_recurring_date' and next.meta_value + INTERVAL 9 day >= CURDATE()"; 
  • 檢查每個用戶meta_key爲 'll_customer_id',並確保其不爲空。
  • 將next_recurring_date的比較器從當前日期更改爲當前日期+9天。
+0

不知道如果我被自己在進步......但我已經更新了它做+9天的事情......在9天應該被添加到的 'next_recurring_date' ''' 值SELECT DISTINCT last.user_id \t FROM ss_usermeta作爲最後 \t JOIN ss_usermeta作爲下一個上last.user_id = next.user_id \t WHERE last.meta_key ='last_trans_date'和last.m eta_value <= CURDATE() \t and next.meta_key ='next_recurring_date'and next.meta_value + INTERVAL 9 day> = CURDATE() ''' –

回答

1

您需要另加入這個:

SELECT DISTINCT last.user_id 
FROM ss_usermeta as last 
JOIN ss_usermeta as next 
    on last.user_id = next.user_id 
JOIN ss_usermeta as third 
    on third.user_id = next.user_id 
WHERE last.meta_key = 'last_trans_date' 
    and last.meta_value <= CURDATE() 
and next.meta_key = 'next_recurring_date' 
    and next.meta_value + INTERVAL 9 day >= CURDATE() 
and third.meta_key = 'll_customer_id' 
    and third.meta_value is not null; 
+0

非常感謝計數已經減少了10,但是這大大地改善了我的功能的準確性。我將繼續重新評估我如何處理用戶的活動狀態。 –