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