Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Ansichten:Verweisen auf ein berechnetes Feld (nach Name) in einem anderen berechneten Feld

Da Unterabfragen in Ansichten nicht zulässig sind, müssen Sie sie simulieren, indem Sie mehrere Ansichten erstellen.

Diese Abfrage löst beispielsweise Ihr Problem, wenn sie direkt ausgeführt wird:

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;

Gemäß der MySQL-Dokumentation Ansichten haben die Einschränkung, dass sie keine Unterabfragen in der FROM-Klausel enthalten können. Um diese Einschränkung zu umgehen und diese Abfrage in eine Ansicht umzuwandeln, teilen Sie sie in drei Ansichten auf (eine für jede Unterabfrage), wobei die letzte die gewünschte Kombination von Feldern enthält:

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;