sql >> Base de Datos >  >> RDS >> Mysql

Vistas de MySQL:hacer referencia a un campo calculado (por nombre) en otro campo calculado

Dado que las subconsultas no están permitidas en las vistas, deberá simularlas creando varias vistas.

Por ejemplo, esta consulta resolverá su problema si se ejecuta directamente:

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;

Según la documentación de MySQL Las vistas tienen la restricción de no poder contener subconsultas en la cláusula FROM. Para solucionar esta limitación y convertir esta consulta en una vista, divídala en 3 vistas (una para cada subconsulta) y la última proporcione la combinación deseada de campos:

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;