sql >> Database >  >> RDS >> Mysql

MySQL-weergaven:verwijzen naar een berekend veld (op naam) in een ander berekend veld

Aangezien subquery's niet zijn toegestaan ​​in weergaven, moet u ze simuleren door meerdere weergaven te maken.

Deze query lost bijvoorbeeld uw probleem op als deze direct wordt uitgevoerd:

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;

Volgens de MySQL-documentatie views hebben de beperking dat ze geen subquery's kunnen bevatten in de FROM-component. Om deze beperking te omzeilen en van deze zoekopdracht een weergave te maken, verdeelt u deze in 3 weergaven (één voor elke subquery) waarbij de laatste de gewenste combinatie van velden geeft:

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;


  1. SELECT SUM() met voorwaarden in mysql

  2. Twee eigenaren van dezelfde PostgreSQL-database

  3. Mysql Max met Groeperen op zoekopdracht

  4. Fatale fout:Maximale uitvoeringstijd van 30 seconden overschreden in C: