if select date 20160730 (week 30), show dayid in week 30 @ dayremark table.
in addition, want limit in middle 3 result. example: if result is: 20160725, 20160727, 20160728, 20160730, 20160731. want final result is: 20160728, 20160730, 20160731 (because first selected date 20160730)
below code
select dayremark.dayid, calander.week_name, dayremark inner join calander on dayremark.dayid = calander.dayid dayremark.dayid = '20160730' group dayremark.dayid
how put calander.week
, limit in middle 3?
you use union
, limit
select the n rows dayid
greated requested date, , same n rows dayid
smaller. in case n=1 have:
( select dayremark.dayid, calendar.week_name dayremark inner join calendar on dayremark.dayid = calendar.dayid dayremark.dayid < '20160730' group dayremark.dayid order dayremark.dayid desc limit 1) union ( select dayremark.dayid, calendar.week_name dayremark inner join calendar on dayremark.dayid = calendar.dayid dayremark.dayid = '20160730' group dayremark.dayid ) union ( select dayremark.dayid, calendar.week_name dayremark inner join calendar on dayremark.dayid = calendar.dayid dayremark.dayid > '20160730' group dayremark.dayid order dayremark.dayid asc limit 1 )
no sure it's best way it.
Comments
Post a Comment