【问题标题】:Sub query in LLBL Gen ProLLBLGen Pro 中的子查询
【发布时间】:2014-09-24 11:21:15
【问题描述】:

我是 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)

【问题讨论】:

    标签: sql llblgenpro


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2011-10-13
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      相关资源
      最近更新 更多