Colonnes calculées PostgreSQL : solutions de contournement pour les limitations
La gestion des colonnes calculées par PostgreSQL diffère des autres systèmes de bases de données. Le référencement direct des colonnes calculées ultérieurement dans la même requête n’est pas pris en charge. Cette limitation est démontrée par l'exemple suivant, qui produira une erreur :
<code class="language-sql">SELECT cost_1, quantity_1, cost_2, quantity_2, (cost_1 * quantity_1) AS total_1, (cost_2 * quantity_2) AS total_2, (total_1 + total_2) AS total_3 -- Error: total_1 and total_2 are not found FROM data;</code>
L'erreur survient parce que PostgreSQL traite la requête ligne par ligne ; total_1
et total_2
ne sont pas disponibles pour les calculs ultérieurs au sein de la même instruction SELECT
.
La solution consiste à utiliser une sous-requête (table dérivée) pour encapsuler les calculs initiaux. Cela permet de référencer les résultats dans la requête externe :
<code class="language-sql">SELECT cost_1, quantity_1, cost_2, quantity_2, total_1, total_2, total_1 + total_2 AS total_3 FROM ( SELECT cost_1, quantity_1, cost_2, quantity_2, (cost_1 * quantity_1) AS total_1, (cost_2 * quantity_2) AS total_2 FROM data ) AS t;</code>
En imbriquant les calculs de total_1
et total_2
dans l'instruction interne SELECT
(alias t
), ils deviennent accessibles et utilisables pour d'autres calculs dans l'instruction SELECT
externe. Cette méthode fournit un moyen pratique et efficace de travailler avec des colonnes calculées dans PostgreSQL sans surcharge de performances significative.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!