Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Widoki MySQL:odwoływanie się do jednego pola obliczeniowego (według nazwy) w innym polu obliczeniowym

Ponieważ podzapytania nie są dozwolone w widokach, musisz je zasymulować, tworząc wiele widoków.

Na przykład to zapytanie rozwiąże Twój problem, jeśli zostanie wykonane bezpośrednio:

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;

Zgodnie z dokumentacją MySQL widoki mają ograniczenie polegające na tym, że nie mogą zawierać podzapytań w klauzuli FROM. Aby obejść to ograniczenie i przekształcić to zapytanie w widok, podziel je na 3 widoki (po jednym dla każdego podzapytania), przy czym ostatni daje żądaną kombinację pól:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zrobić odpowiednik limitu different?

  2. Wstaw dane mysql za pomocą Ajax i PHP

  3. Pobieranie procentu Count(*) do liczby wszystkich elementów w GROUP BY

  4. MySQL Connector/Python - wstaw zmienną Pythona do tabeli MySQL

  5. Nie można utworzyć wtyczki Storage dla Mysql Apache Drill