4列のfavoriteテーブルがあります
employee_idproduct_idfrequencylast_consumed_date
今、私は6の最小値で最高frequencyの6行を取得しています.employee_idfrequency
employee_id1の例
SELECT * FROM `favorites` 
WHERE `employee_id` = 1
AND `frequency` >= 6
ORDER BY `frequency` DESC LIMIT 0,6
ここまでは順調ですね!
last_consumed_dateしかし、今は1か月(30日)以内であれば行を優先したいので、次のことをしなければなりません:
DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= `lastchanged`
より明確にするための表の例を次に示します
。
1   5 11  2012-10- 3  
1  13  8  2012-11- 7  
1  18 20  2012- 9-25
1  42 10  2012-11- 3
1  28 15  2012-10-17
1   9  7  2012-10- 8
1  64  9  2012-11- 1
2  24  8  2012- 8-28
2  12  5  2012-10-16
2   5 12  2012-11-11
今日は2012-11- 8
30 日前です2012-10- 9
。SQL の後に返されるテーブルです。
1  28 15  2012-10-17 <Sorted by 30 days interval and frequency>
1  42 10  2012-11- 3 
1  64  9  2012-11- 1 
1  13  8  2012-11- 7 
1  18 20  2012- 9-25 <Sorted by frequency>
1   5 11  2012-10- 3 
ここで問題は、1 つのクエリでこれら 2 つのものを注文するにはどうすればよいかということです。最初に日付順 (30 日間隔) から、分離された結果の頻度順 (間隔内およびその他すべて) で並べ替えます。