How to double inner join in mysql -


this table

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