Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Visualizações do MySQL:referenciando um campo calculado (por nome) em outro campo calculado


Como as subconsultas não são permitidas nas visualizações, você precisará simulá-las criando várias visualizações.

Por exemplo, esta consulta resolverá seu problema se for executada diretamente:
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;

De acordo com a documentação do MySQL views têm a restrição de não poder conter subconsultas na cláusula FROM. Para contornar essa limitação e transformar essa consulta em uma visualização, divida-a em 3 visualizações (uma para cada subconsulta) com a última fornecendo a combinação desejada 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;