У меня отлично работает MySQL View:
SELECT `t`.`TraderId` AS `TraderId`,`t`.`ShopName` AS `ShopName`,`t`.`UserId` AS `UserId`,`t`.`CreatedOn` AS `CreatedOn`,`t`.`MOL` AS `MOL`,`u`.`Phone` AS `Phone`,`u`.`Email` AS `Email`,`rt`.`Name` AS `RentType`,(
SELECT SUM(`o`.`Ammount`) AS `AmmountSum`
FROM `Orders` `o`
WHERE (`o`.`TraderId` = `t`.`TraderId`)) AS `Revenue`,(
SELECT SUM(`o`.`Ammount`) AS `SUM(o.Ammount)`
FROM `Orders` `o`
WHERE ((MONTH(`o`.`DeliveryDate`) = MONTH(CURDATE())) AND (YEAR(`o`.`DeliveryDate`) = YEAR(CURDATE())) AND (`o`.`TraderId` = `t`.`TraderId`))) AS `MonthRevenue`,(`t`.`RatingSum` / `t`.`RatingVotes`) AS `Rating`,(
SELECT CASE `rt`.`IsMonthlyBased` WHEN 1 THEN (
SELECT ( (12 * ((YEAR(CURDATE())
- YEAR(`t`.`LastPaidDate`)))
+ (MONTH(CURDATE())
- MONTH(`t`.`LastPaidDate`))) * `rt`.`Tax`)) END) AS `Debt`
FROM ((`Traders` `t`
LEFT JOIN `Users` `u` ON((`u`.`UserId` = `t`.`UserId`)))
LEFT JOIN `RentTypes` `rt` ON((`rt`.`RentTypeId` = `t`.`RentTypeId`)))
Я не знаю, как отформатировать код, так что если вы можете скопировать и вставить его в редактор и увидеть его.Спасибо.
Итак, представление работает.Но когда вы переходите к любому конструктору (heideSql, workBench, navicat) и нажимаете на вид alter, скрипт представления генерируется неправильно:
SELECT `t`.`TraderId` AS `TraderId`,`t`.`ShopName` AS `ShopName`,`t`.`UserId` AS `UserId`,`t`.`CreatedOn` AS `CreatedOn`,`t`.`MOL` AS `MOL`,`u`.`Phone` AS `Phone`,`u`.`Email` AS `Email`,`rt`.`Name` AS `RentType`,(
SELECT SUM(`o`.`Ammount`) AS `AmmountSum`
FROM `Orders` `o`
WHERE (`o`.`TraderId` = `t`.`TraderId`)) AS `Revenue`,(
SELECT SUM(`o`.`Ammount`) AS `AmmountSumMonth`
FROM `Orders` `o`
WHERE ((MONTH(`o`.`DeliveryDate`) = MONTH(CURDATE())) AND (YEAR(`o`.`DeliveryDate`) = YEAR(CURDATE())) AND (`o`.`TraderId` = `t`.`TraderId`))) AS `MonthRevenue`,(`t`.`RatingSum` / `t`.`RatingVotes`) AS `Rating`,(
SELECT (CASE `rt`.`IsMonthlyBased` WHEN 1 THEN (
SELECT (((12 * (YEAR(CURDATE()) - YEAR(`t`.`LastPaidDate`))) + (MONTH(CURDATE()) - MONTH(`t`.`LastPaidDate`))) * `rt`.`Tax`) AS `( (12 * ((YEAR(CURDATE())
- YEAR(``t``.``LastPaidDate``)))
+ (MONTH(CURDATE())
- MONTH(``t``.``LastPaidDate``))) * ``rt``.``Tax``)`) END) AS `CASE ``rt``.``IsMonthlyBased`` WHEN 1 THEN (
SELECT ( (12 * ((YEAR(CURDATE())
- YEAR(``t``.``LastPaidDate``)))
+ (MONTH(CURDATE())
- MONTH(``t``.``LastPaidDate``))) * ``rt``.``Tax``)) END`) AS `Debt`
FROM ((`Traders` `t`
LEFT JOIN `Users` `u` ON((`u`.`UserId` = `t`.`UserId`)))
LEFT JOIN `RentTypes` `rt` ON((`rt`.`RentTypeId` = `t`.`RentTypeId`)))
Мой последний столбец выбора генерируется дважды, появляются двойные кавычки (``)и так далее.Так где же моя ошибка?