执行子查询
SQL 中一种非常强大的技术是使用子查询来询问有关数据的更复杂的问题。此范例显示通过嵌套EntityFunction 生成相关和不相关子查询是多么容易。
注册具有丰富表结构的范例数据库。
假设有人想看看接近最贵产品价格的产品。有人可能会首先通过执行聚合来查看最贵产品价格,然后在查询中使用结果。
这种方法的问题在于,无论何时执行两个查询,数据库的另一个用户可能会在没有警告的情况下更改产品价格,这样您的结果将受到影响。
这个问题的一个常见解决方案是内联执行这些支持计算,以便它们在单个事务中发生.
现在,相同的表达式出现在 EntityFunction 表达式的主体中,因此保证由数据库进行计算。
SQL 中使用的另一种常见模式是通常称为相关子查询的模式。在函数式编程中,这相当于具有嵌套的纯函数,其中内部函数依赖于外部函数的参数。逐步构建这样的范例。
您要回答的问题是,哪些产品的价格在 15 美元范围内? 首先,您需要构造一个 FilteredEntityClass 表达式,它表示值 price 在 15 美元以内的产品。
那你需要数数。您可以使用特殊属性 "EntityCount" 来完成此操作。
现在,您可以将其作为新属性添加到产品类中。
由于您将 price 的值固定为 100,因此对于 "products" 中的所有实体,此查询实际上将返回相同的值28。
如果希望它返回不同的值,则需要使价格的值取决于外部 EntityFunction 的槽。
如您所见,您现在有两个嵌套的 EntityFunction 表达式,而最里面的一个表达式包含两个参数。
您可以验证每种产品的结果是否不同。
现在,通过使用这个新创建的属性对结果进行排序,可以获得更丰富的结果。