Подзапрос в LLBL Gen Pro

Я новичок в LLBL gen pro, мне нужно написать подзапрос, используя LLBL gen pro, но у меня нет образца того, как это написать. Это запрос, который я должен написать, я знаю, как определять поля, отношения и выражения предиката.

select UserId, TransactionId from 
UserTransaction
where TransactionId in
(
select  MaxId as TransactionId from
(SELECT MAX([TransactionId]) as MaxId, userid
FROM [UserTransaction]
group by userid) u1
inner join [UserTransaction] c2 on u1.MaxTId = c2.CCLeadTransactionId
where UserTypeId in (4,5)
)

и это моя структура таблицы

UserTransaction
TransactionId userid UserTypeId

Как я могу написать этот запрос

  select  MaxId as TransactionId from
    (SELECT MAX([TransactionId]) as MaxId, userid
    FROM [UserTransaction]
    group by userid) u1
    inner join [UserTransaction] c2 on u1.MaxTId = c2.CCLeadTransactionId
    where UserTypeId in (4,5)

person Syed Salman Raza Zaidi    schedule 24.09.2014    source источник


Ответы (1)


Основная идея состоит в том, чтобы создать внутренний запрос, который родительский запрос может использовать

Пример кода ниже (не проверял, могут быть опечатки)

var qf = new QueryFactory(); // create your create factory

var subFilterQuery = qf.Create()
    .Select(()=> UserTransaction.TransactionId.SetAggregateFunction(AggregateFunction.Max).ToValue<int>()) // select max transaction value
    // do joins, etc
    .GroupBy(UserTransactionFields.UserId);

var parentQuery = qf.Create()
    .Select(()=> new {
        UserId = UserTransactionFields.UserId.ToValue<int>(),
        TransactionId = UserTransactionFields.TransactionId.ToValue<int>(),
    })
    .Where(UserTransactionFields.TransactionId.In(subFilterQuery.ToScalar())); // use create query as filter
person Remigijus    schedule 07.08.2015