sql >> Databasteknik >  >> RDS >> Mysql

MySQL Views:Refererar till ett beräknat fält (med namn) i ett annat beräknat fält

Eftersom underfrågor inte är tillåtna i vyer måste du simulera dem genom att skapa flera vyer.

Till exempel kommer den här frågan att lösa ditt problem om den körs direkt:

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;

Enligt MySQL-dokumentationen vyer har begränsningen att inte kunna innehålla underfrågor i FROM-satsen. För att kringgå denna begränsning och förvandla den här frågan till en vy, dela upp den i tre vyer (en för varje underfråga) där den sista ger önskad kombination av fä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;


  1. Laravel vältalig frågebyggare - Summa med grupp om relation

  2. Välj att all data inkluderar en annan tabell även om den är null

  3. REPLACE kontra INSERT i SQL

  4. Vad är SQL Server?