У меня есть таблицы в этих строках:
A:
id param_1 param_2 status dateUpdated
-----------------------------------------------
1 valuea valueb Active 2018-10-02
2 valuec valued Inactive 2018-09-03
3 valuee valuef Active 2018-10-01
4 valueg valueh Active 2017-01-20
5 value1 value2 Active 2018-03-03
6 value3 value4 Active 2016-10-21
...
B:
id a_id some_param dateModified
-------------------------------------
1 3 x 2018-10-04
2 2 y 2018-06-30
3 4 aa 2018-10-01
...
99 6 ab 2018-01-16
100 3 z 2018-04-08
Я хочу записи в A
, которые были обновлены послеопределенная дата, но также включает в себя другие записи (если они еще не существуют, в противном случае возвращаются самые последние даты), которые соответствуют условию даты из другой таблицы B
.
если только таблица A
:
select id,
param_1,
param_2,
dateUpdated
from A
where status = 'Active'
and dateUpdated between @someDate and @someAnotherDate
Теперь с объединением:
select distinct A.id,
A.param_1,
A.param_2,
A.dateUpdated -- or B.dateModified, whichever is latest if that's even possible
from A
join B on B.a_id = A.id
where A.status = 'Active'
and ((A.dateUpdated between @someDate and @someAnotherDate) || (B.dateModified between @someDate and @someAnotherDate))
Итак, из вышесказанного, скажем, для someDate = '2018-10-01'
и someAnotherDate = '2018-10-04'
Я бы получил результат:
id, param_1 param_2 dateUpdated
------------------------------------
1 valuea valueb 2018-10-02
3 valuee valuef 2018-10-04
4 valueg valueh 2018-10-01