Faça subconsultas
Uma técnica muito poderosa em SQL é o uso de subconsultas para fazer perguntas mais complexas sobre os dados. Este exemplo mostra como é fácil gerar subconsultas correlacionadas e não correlacionadas aninhando EntityFunction.
Registre um banco de dados de exemplo com uma estrutura de tabela complexa.
Suponha que alguém quisesse ver produtos que estão próximos do preço máximo do produto. Pode-se ficar tentado a olhar primeiro para o preço máximo do produto fazendo uma agregação para depois usar o resultado em uma consulta.
O problema com essa abordagem é que sempre que você executa duas consultas, outro usuário do banco de dados pode estar alterando os preços do produto sem aviso e seus resultados serão comprometidos.
Uma solução comum para esse problema é executar esses cálculos de suporte de maneira explícita para que eles ocorram em uma única transação.
A mesma expressão agora aparece no corpo da expressão EntityFunction para garantir que ela seja executada pelo banco de dados.
Outro padrão comum usado em SQL é o que é chamado normalmente como subconsultas correlacionadas. Na programação funcional, isso seria equivalente a ter funções puras aninhadas, onde as internas dependem dos parâmetros das funções externas. Construa um exemplo desses passo a passo.
A pergunta que você está tentando responder é: quais produtos têm mais produtos em uma faixa de preço de 15 dólares? Primeiro, crie uma expressão FilteredEntityClass que represente os produtos com um preço dentro da faixa de 15 dólares em torno de um price de referência.
Depois você precisa contá-los. Você pode fazer isso usando a propriedade especial "EntityCount".
Agora você pode adicionar isso como uma nova propriedade à classe de produtos.
Como você fixou o valor do price em 100, essa consulta retornará o mesmo valor de 28 para todas as entidades em "products".
Se você deseja que ele retorne valores diferentes, é necessário que o valor do preço dependa do slot do EntityFunction externo.
Como você pode ver, agora você tem duas expressões EntityFunction aninhadas e o corpo da expressão mais interna contém os dois parâmetros.
Você pode verificar se você obtém resultados diferentes para cada produto.
Agora, obtenha um resultado mais completo usando essa propriedade recém-criada para classificar os resultados.