У меня есть таблица Посещений для магазина, который выглядит следующим образом:
Id Timestamp UniqueUser IsTrans
1 2011-01-31 5874 True
2 2011-01-30 1238 True
3 2011-01-29 8547 True
4 2011-01-28 5874 False
5 2011-01-27 1238 True
6 2011-01-26 1238 True
7 2011-01-25 5874 False
8 2011-01-24 1238 True
9 2011-01-23 1238 True
10 2011-01-22 5874 True
... ... ... ...
Кроме того, у меня есть таблица Транзакции , которая содержит информацию о транзакции. Выглядит так:
Id Visit_Id OrderPrice
1 1 100
2 2 100
3 3 100
4 5 100
5 6 100
6 8 100
7 9 100
8 10 100
... ... ...
Я хочу получить список посещений уникального пользователя, который вызвал транзакцию, плюс посещения, которые привели к транзакции (того же уникального посетителя). Например, для первой транзакции я хочу получить список, который содержит эти посещения
Id Timestamp UniqueUser IsTrans
1 2011-01-31 5874 True
4 2011-01-28 5874 False
7 2011-01-25 5874 False
Ну, мне удалось сделать это с 2 запросами, как это:
var transList = _session.QueryOver<Transaction>().Left.JoinAlias(x => x.visit, () => visitAlias).Where(() => visiteAlias.UniqueId == trans.visit.UniqueId && visit.Timestamp < trans.trackingCookie.Timestamp).Take(1).ToList();
var listvisit =
_session.QueryOver<Visit>().Where(
x =>
x.Timestamp <= trans.visit.Timestamp &&
x.Timestamp > transList[0].visit.Timestamp && x.UniqueId == trans.visit.UniqueId).OrderBy(x=>x.Timestamp).Desc().Future().ToList();
, где trans - первая транзакция. Как видите, я нахожу отметку времени последней транзакции того же пользователя, а затем извлекаю список.
Есть ли способ получить этот список всего за один запрос?
Заранее спасибо и извините за длину сообщения