Actually, the data_periods contains a complete range such as [2018-09-01,2018-09-30] and data_sub_periods contains sub periods contained in this period like: [2018-09-05, 2018-09-07] [2018-09-09, 2018-09-11] [2018-09-12, 2018-09-19]
I make two conditions in order to fetch first if the period [2018-09-01,2018-09-30] contained in the first table.If it exists I will return the sub periods that overlaps the given period where data_periods.period && '[2018-09-01,2018-09-30]'::daterange and data_sub_periods && '[2018-09-01,2018-09-30] '::daterange