4列のfavorite
テーブルがあります
employee_id
product_id
frequency
last_consumed_date
今、私は6の最小値で最高frequency
の6行を取得しています.employee_id
frequency
employee_id
1の例
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 日間隔) から、分離された結果の頻度順 (間隔内およびその他すべて) で並べ替えます。