2016-08-15 43 views
0

我已經創建了一個系統來存儲我的活動帳戶,這些帳戶是根據他們上次交易的日期範圍以及他們將設置爲開帳單的下一個日期來存儲的。加入日期以查找活躍用戶

我正在使用以下選項來選擇相關數據。

SELECT * FROM `ss_usermeta` WHERE `meta_key` = 'last_trans_date'; 
SELECT * FROM `ss_usermeta` WHERE `meta_key` = 'next_recurring_date'; 

我的目標是查詢所有在今天的日期或給定的日期之間有效的賬戶。

一個例子排爲last_transaction_date

umeta_id | user_id | meta_key | meta_value 
901891 | 7886 | last_trans_date | 11/4/15 

一個例子排爲next_recurring_date

umeta_id | user_id | meta_key | meta_value 
901291 | 7886 | next_recurring_date | 12/4/15 

活動帳戶將是其中今天的日期是last_trans_date和next_recurring_date之間。

+1

請定義您通過主動是什麼意思? – Hogan

+0

另外,第二個不能正確,因爲元鍵值與查詢不一樣。 – Hogan

+0

當前日期介於last_trans_date和next_recurring_date之間的活動帳戶 –

回答

1

我想你想last_trans_date小於主動和next_recurring_date比主動更大的 - 我不喜歡這樣

SELECT 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 cast(last.meta_value as date) <= CURDATE() 
    and next.meta_key = 'next_recurring_date' and cast(next.meta_value as date) >= CURDATE() 
+0

我在SQL專業版中運行它,並且在字段列表中列'user_id'不明確。附註是我將日期存儲爲可接受的格式? –

+0

@NicholasKoskowski - 你真的不知道如何解決?爲你幸運我在我的答案中修正了錯字。 – Hogan

+0

@NicholasKoskowski - 格式是指數據模型嗎?很難說如果不知道更多關於數據將如何使用。如果元數據類型變化很大(罕見),那麼捕獲所有元表是很好的,如果元數據類型非常穩定(更常見),則表示不好。 – Hogan