【发布时间】:2013-11-21 21:41:27
【问题描述】:
我在将有点简单的查询转换为 LLBLGen Pro 动态查询时遇到了问题。我需要转换类似于以下 SQL 的内容(但我将传递区域的值、要检查的 id 和所需的名称):
SELECT Parent.Id
FROM Parent INNER JOIN Child
ON Child.ParentId = Parent.Id
WHERE Parent.Region = '1'
AND Parent.Id IN (1, 2, 3, 4, 5)
GROUP BY
Parent.Id
HAVING SUM(CASE WHEN child.Name IN ('Required1', 'Required2', 'Required3') THEN 1 ELSE 0 END) != 3
但是,我很难将 Have 子句转换为等效的 LLBL。
这是我目前所拥有的:
var q = qf.Create()
.From(qf.ParentView
.InnerJoin(qf.ChildView)
.On(ChildViewFields.Id == ParentViewFields.ParentId))
.Where((ParentViewFields.Region == _region)
.And(ParentViewFields.Id.In(_checkIds)))
.Select(() => ParentViewFields.Id.ToValue<string>())
.GroupBy(ParentViewFields.Id)
.Having( ??? )
任何帮助将不胜感激。对于如何完成 SQL 所做的事情,我愿意接受其他建议(注意它必须在数据库中运行,而不是为了进一步计算而关闭客户端)。
【问题讨论】:
-
只需使用另一个
Where子句。 -
你能扩展一下吗?一开始我不是一个 SQL 人。
标签: c# llblgenpro