Mysql 创建视图表时,如何多次使用计数?

Mysql 创建视图表时,如何多次使用计数?,mysql,sql,Mysql,Sql,因此,我目前正在尝试创建一个包含以下信息的视图表:事件代码、事件名称、放映次数、屏幕成本、总放映成本(放映次数*放映成本)、促销成本、生产成本、总成本(总屏幕成本+促销成本+生产成本)、预期成本 收入(使用BaseTicketPrice)、实际收入、给定的总折扣(预期收入-实际收入)和利润(所有成本-实际收入) 因此,在这个观点中包含了大量的信息 此外,信息来自多个表,大约4个 我必须从EventShow表中找出演出的数量,然后在后面的等式中使用演出的数量。如何构造表的计数,然后在等式/聚合中再

因此,我目前正在尝试创建一个包含以下信息的视图表:事件代码、事件名称、放映次数、屏幕成本、总放映成本(放映次数*放映成本)、促销成本、生产成本、总成本(总屏幕成本+促销成本+生产成本)、预期成本 收入(使用BaseTicketPrice)、实际收入、给定的总折扣(预期收入-实际收入)和利润(所有成本-实际收入)

因此,在这个观点中包含了大量的信息

此外,信息来自多个表,大约4个

我必须从EventShow表中找出演出的数量,然后在后面的等式中使用演出的数量。如何构造表的计数,然后在等式/聚合中再次使用它

我意识到我下面所说的确实是不正确的,但我现在主要是在计数部分挣扎

    CREATE OR REPLACE VIEW TicketDetails AS
    SELECT
        E.EventCode,
        E.EventName,
        E.EventShows Count(*) as NumberOfShows,
       (E.ScreeningCost * NumberOfShows) as TotalScreeningCost,
       (E.BaseTicketPrice * Ticket(Count(*))) as ExpectedRevenue,
        E.PromotionCost,
        E.ProductionCost,
       (TotalScreeningCost + E.PromotionCost + E.ProductionCost) as TotalCost,
       (E.BaseTicketPrice * TS.TicketsSolds) as ActualRevenue, 
       (ExpectedRevenue - ActualRevenue) as TotalDiscounts
       (TotalCost - ActualRevenue) as Profit
        FROM Event E, Ticket T, TicketSale TS, EventShow ES
        WHERE (E.EventCode = TS.EventCode);

select列表是sql中最后执行的子句之一。在select列表中定义的任何别名只能在order by和having子句中引用,而不能在select列表或where子句中引用

另一个问题是,如果您联接多个表,则无法使用
count(*)
count(tablename.*.
)对其中一个表返回的行进行计数,因此必须使用该表中的字段,如果从该表返回一行,则该字段不能为空-这应该是您联接该表的字段。基于表格的简化示例:

select e.eventcode, e.eventname, count(es.eventcode) as numberofshows, e.screeningcosts*count(es.eventcode) as totalscreeningcosts
from events e left join eventshows es
on e.eventcode=es.eventcode
group by e.eventcode, e.eventname, e.screeningcosts
我假设这两个表都有一个eventcode字段