...
- Entidade: Na propriedade entidade, clique no "..." e selecione a entidade desejada na consulta, após isso clique em "Adicionar". Nesse caso a entidade utilizada foi a Cidade Cidade que está sendo representada como 'c'.
- Campos: Na propriedade campos, clique em "Novo Campo" e em seguida selecione o campo que deseja trazer na consulta , nesse exemplo utilizamos o campo estado (Para adicionar novos campos basta repetir o processo, ou se desejar trazer todos os campos selecione o objeto inteiro. No exemplo atual para trazer todos os campos seria necessário selecionar o campo 'c').
- Regra: Na propriedade regra, clique em "Nova Regra" e selecione um filtro para a consulta (Ex: Selecionar os campos em que o id seja maior que 1). No exemplo atual a quantidade de habitantes deve ser diferente do valor do parâmetro 'minimo'.
- Agrupar: Na propriedade agrupar, clique em "Novo Campo" e selecione o campo pelo qual os itens devem ser agrupados, nesse exemplo os itens são agrupados por estado.
- Having: Na propriedade having, clique em "Novo Campo" e informe uma nova regra para a consulta, porém a regra utilizada em having possui opções diferentes da propriedade regra (São utilizados as opções Sum, Avg, Min, Max, Count). Em nosso exemplo, a soma da quantidade de habitantes dos estados deve ser maior que o valor do parâmetro 'quantidadeHabitantes' ( Lembrando que a propriedade having funciona em conjunto com a propriedade agrupar, primeiro os itens são agrupados e o having é aplicado nos grupos).
- Ordenar: Na propriedade ordenar, clique em "Novo Campo" e selecione o campo pelo qual deseja ordenar e em qual ordem(Ascendente ou Descendente), nessa situação utilizamos o campo estado e a opção Asc (Ascendente).
- Selecione a opção "Ok" para salvar a consulta.
...
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
SELECT estado FROM cidade WHERE quantidadehabitantes > minimo GROUP BY estado HAVING Sum(quantidadehabitantes) > quantidadehabitantes ORDER BY estado ASC |
Realizando consultas entre duas tabelas
É possível também realizar consultas entre mais de uma tabela. No exemplo abaixo, iremos retornar o nome dos países em que as cidades possuem mais de 50 mil habitantes e a soma dos habitantes de todas as cidades do país devem ser iguais ou superiores a 1 milhão.
Figura 4 - Consulta visual JPQL (Bloco de programação)
Siga os passos abaixo para obter a consulta da figura 4:
- Entidade: Na propriedade entidade, utilizamos a entidade Cidade que é representada como 'c'.
- Campos: Na propriedade campos, selecionamos a opção 'c.pais.nome' para podermos retornar o nome do país em que a cidade está relacionada.
- Regra: Nessa propriedade a regra definida foi que a quantidade de habitantes das cidades retornadas deve ser maior que 0.
- Agrupar: Os itens foram agrupados por país pelo campo 'c.pais.nome'.
- Having: Na propriedade having, a regra definida foi que o número de habitantes dos países(O atributo utilizado no exemplo foi o 'c.quantidadeHabitantes', mas como as cidades estão agrupadas por país considera-se que essa soma dos habitantes das cidades representa o total de habitantes do país) deve ser maior ou igual a 1 milhão.
Bloco de código |
---|
Select p.Nome FROM Cidade as c, Pais as p WHERE p.id = c.fk_pais and c.quantidadeHabitantes > 100000
GROUP BY p.Nome HAVING SUM(c.quantidadeHabitantes) > 3000000 |
Fonte de dados VS Bloco de programação
Existem algumas diferenças entre o assistente de consulta JPQL da fonte de dados e o do bloco de programação.
Figura 4 5 - Consulta visual JPQL (Bloco de programação)
Figura 45.1 - Consulta visual JPQL (Fonte de dados)
...