Mysql
 sql >> Database >  >> RDS >> Mysql

Viste MySQL:riferimento a un campo calcolato (per nome) in un altro campo calcolato

Poiché le sottoquery non sono consentite nelle viste, dovrai simularle creando più viste.

Ad esempio, questa query risolverà il tuo problema se eseguita direttamente:

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;

Secondo la documentazione MySQL le viste hanno la limitazione di non poter contenere sottoquery nella clausola FROM. Per aggirare questa limitazione e trasformare questa query in una vista, suddividila in 3 viste (una per ogni sottoquery) con l'ultima che fornisce la combinazione di campi desiderata:

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;