Définition et usage des vues (entity.xml) Part2
Fonctions complexes
Les attributs group-by et function sont équivalent aux fonctions de regroupement et de calcul présentes en SQL. L'attribut group-by peut être défini à vrai ou faux. Quand il est à vrai, les résultats d'une requête seront groupés selon l'alias donné. Cela veut aussi dire que les résultats qui seront groupés doivent avoir les mêmes valeurs afin d'être groupés. L'attribut function sert à effectuer des opérations sur les données groupées via un group-by, comme vu au-dessus. Les calculs effectués seront ceux spécifiés par la définition de la fonction. Les fonctions disponibles que nous pouvons utiliser sont :
- min
- max
- sum
- avg
- count
- count-distinct
- upper
- lower.
Toutes ces fonctions sont équivalentes à celles présentes en SQL.
Effectuer des calculs dans une vue
La méthode complex-alias permet d'effectuer des calculs dans une vue. Voici un exemple :
<alias entity-alias="II" name="amountPerLine" function="sum">
<complex-alias operator="*">
<complex-alias-field entity-alias="II" field="amount" default-value="0"/>
<complex-alias-field entity-alias="II" field="quantity" default-value="0"/>
</complex-alias>
</alias>
Ces lignes permettent de recréer la requête SQL SELECT SUM(amount*quantity) AS amountPerLine. Donc on pourra directement dans notre vue créer une nouvelle colonne contenant ce résultat pour l'exploiter ensuite. Il est intéressant de pouvoir aussi défnir une valeur par défaut pour les champs, ce qui évitera une erreur en cas de valeur nulle. Les opérateur supportés sont ceux de la base de données utilisées (le plus souvent +, -, *, /, mais aussi la concaténation de chaînes avec ||). On pourra aussi rajouter pour chaque complex-alias-field l'attribut function qui reprendra une des fonctions vues précédemment (min, max, sum, avg, count, count-distinct, upper, lower).
Groupements dans les vues
Lors d'un groupement, ne pas oublier de faire un orderBy sur le champ qui sera groupé. (A compléter)


