У меня есть две таблицы, которые представляют статус пользователя вместе с отметкой времени, когда его статус изменился.У меня есть что-то вроде этого:
StatusTable
user_id updated_status timestamp
---------------- ---------------- -----------------------
1617 PENDING 2018-02-21 01:06:01.000
1617 DONE 2018-02-21 01:01:01.000
1617 PENDING 2018-02-06 01:06:01.000
OverrideStatusTable
user_id updated_status timestamp
---------------- -------------------------------- -----------------------
1617 2018-02-23 08:12:40.297
1617 DONE-A 2018-02-14 15:10:49.717
1617 DONE-B 2018-02-14 15:10:35.850
1617 2018-02-14 15:09:23.973
1617 DONE-A 2018-02-14 14:59:30.113
Я пытаюсь объединить две таблицы в один результат, упорядоченный по отметке времени, в котором значения в OverriddeStatusTable переопределяют значения в StatusTable, за исключением случаев, когда updated_statusв таблице OverrideStatus пусто, в которой вместо этого отображается самое последнее состояние из StatusTable, но с отметкой времени очищенного значения из OverrideStatusTable.Поэтому я хотел бы, чтобы результат моего запроса выглядел примерно так:
user_id updated_status timestamp
---------------- ---------------- -----------------------
1617 PENDING 2018-02-23 08:12:40.297
1617 DONE-A 2018-02-14 15:10:49.717
1617 DONE-B 2018-02-14 15:10:35.850
1617 PENDING 2018-02-14 15:09:23.973
1617 DONE-A 2018-02-14 14:59:30.113
1617 PENDING 2018-02-06 01:06:01.000
Я пытаюсь выяснить, как лучше всего это сделать - имейте в виду, что в конечном итоге я буду загружатьэти две таблицы как DataTables в моем .NET-проекте и запрос их с помощью LINQ.Но сейчас я просто хочу убедиться, что я правильно понял логику.
Прямо сейчас мой запрос настроен так:
select *
from StatusTable
where user_id='1617'
UNION
select *
from OverrideStatusTable
where user_id='1617' and updated_status != ''
order by update_date desc
Но это не приближает меня кчто я хочу.Вывод этого:
user_id updated_status timestamp
---------------- -------------------------------- -----------------------
1617 PENDING 2018-02-21 01:06:01.000
1617 DONE 2018-02-21 01:01:01.000
1617 DONE-A 2018-02-14 15:10:49.717
1617 DONE-B 2018-02-14 15:10:35.850
1617 DONE-A 2018-02-14 14:59:30.113
1617 PENDING 2018-02-06 01:06:01.000
Может кто-нибудь, пожалуйста, помогите мне здесь?Спасибо!