You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL多表关联求和查询:获取电影详情及对应总售票数

修正后的SQL查询语句(获取电影详情及总售票数)

先看看你原来的SQL语句里存在的几个关键问题:

  • 关联Sessions表时用了错误的连接条件:Movies.MovieID = Movies.MovieID,这根本没把两张表关联起来
  • 关联Tickets表时的条件错误:Movies.MovieID = Tickets.SessionID,Tickets的SessionID应该关联到Sessions的SessionID,而不是直接关联电影ID
  • 统计售票数用了SUM(Tickets.SessionID),这是对SessionID求和,不是统计票数,应该用计数函数COUNT()

下面是修正后的查询语句,能正确关联表并统计每部电影的总售票数:

SELECT 
    m.MovieID,
    m.Title,
    m.Released,
    m.Runtime,
    m.Classification,
    m.Plot, -- 补充原需求里的电影详细信息字段
    COUNT(t.TicketID) AS TotalTickets
FROM 
    Movies m
LEFT JOIN 
    Sessions s ON m.MovieID = s.MovieID
LEFT JOIN 
    Tickets t ON s.SessionID = t.SessionID
GROUP BY 
    m.MovieID, m.Title, m.Released, m.Runtime, m.Classification, m.Plot
ORDER BY 
    m.Released;

关键修正点说明:

  • 使用表别名(m代表Movies,s代表Sessions,t代表Tickets)让语句更简洁易读
  • 修正了表连接逻辑,确保Movies→Sessions→Tickets的关联链正确
  • 用COUNT(t.TicketID)统计总售票数,LEFT JOIN确保即使没有售票记录的电影也会显示(总票数为0)
  • 补充了Plot字段,满足"所有电影详细信息"的需求
  • 按照SQL标准将所有非聚合字段加入GROUP BY子句(如果你的数据库支持主键分组优化,只写m.MovieID也可以,但加上所有字段兼容性更好)

内容的提问来源于stack exchange,提问作者r92l30

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:27:04