MySQL VIEW, используя предварительные вычисления, избегая вложенного VIEW - PullRequest
0 голосов
/ 25 января 2019

Можно ли использовать предварительный расчет в MySQL VIEW?Я много играл с этим и искал в Интернете (в том числе на SO), но я ничего не понимаю.

Если это возможно, я должен использовать синтаксис неправильного типа.Например, если у меня что-то вроде этого (упрощенный пример), оно выдаст мне ошибку, что он не знает, где найти factory_1_revenue и т. Д.

CREATE VIEW [myview] AS
SELECT
(t1.qty * t1.price) AS factory_1_revenue,
(t2.qty * t2.price) AS factory_2_revenue,
(THIS_VIEW.factory_1_revenue + THIS_VIEW.factory_2_revenue) AS factories_revenue
FROM table1 AS t1
JOIN table2 AS t2 ON t1.id = t2.id;

Я могу создать другое представление поверхэто, но я бы предпочел сохранить его простым и избегать вложенных представлений, если это возможно.

Вот некоторые дополнительные подробности:

+-------------------------------+
|             table1            |
+-------------------------------+
| id | product_id | qty | price |
+----+------------+-----+-------+
| 1  | 1          | 50  |  3.00 |
+----+------------+-----+-------+
| 2  | 2          | 65  |  2.00 |
+----+------------+-----+-------+
| 3  | 3          | 70  |  2.50 |
+----+------------+-----+-------+

+-------------------------------+
|             table2            |
+-------------------------------+
| id | product_id | qty | price |
+----+------------+-----+-------+
| 1  | 1          | 40  |  3.00 |
+----+------------+-----+-------+
| 2  | 2          | 20  |  2.00 |
+----+------------+-----+-------+
| 3  | 3          | 30  |  2.50 |
+----+------------+-----+-------+

По сути, как я могу ссылаться на вычисленное значение с учетом псевдонима ASсозданный в операторе SELECT VIEW:

( factory_1_revenue + factory_2_revenue ) AS factories_revenue

Без получения ошибки?

(Мое реальное представление, база данных и т. Д. Намного сложнее, я попытался упростить / минимизировать это, чтобы просто показать мой вопрос.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...