Mysql
 sql >> Base de données >  >> RDS >> Mysql

Vues MySQL :Référencement d'un champ calculé (par son nom) dans un autre champ calculé

Étant donné que les sous-requêtes ne sont pas autorisées dans les vues, vous devrez les simuler en créant plusieurs vues.

Par exemple, cette requête résoudra votre problème si elle est exécutée directement :

SELECT 
    TotalCircles + TotalSquares AS TotalShapes
FROM
    (SELECT 
        BlueCirles + RedCircles AS TotalCircles,
        BlueSquares + RedSquares AS TotalSquares
    FROM
        (SELECT
            2 AS BlueCirles,
            3 AS RedCircles,
            4 AS BlueSquares,
            5 AS RedSquares
        ) AS shapes
    ) as totals;

Selon la documentation MySQL les vues ont la restriction de ne pas pouvoir contenir de sous-requêtes dans la clause FROM. Pour contourner cette limitation et transformer cette requête en vue, divisez-la en 3 vues (une pour chaque sous-requête), la dernière donnant la combinaison de champs souhaitée :

CREATE VIEW shapes AS
SELECT
    2 AS BlueCirles,
    3 AS RedCircles,
    4 AS BlueSquares,
    5 AS RedSquares;

CREATE VIEW totals AS
SELECT 
    BlueCirles + RedCircles AS TotalCircles,
    BlueSquares + RedSquares AS TotalSquares
FROM
    shapes;

CREATE VIEW result AS
SELECT 
    TotalCircles + TotalSquares AS TotalShapes
FROM
    totals;

SELECT * FROM result;