首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL数据库连接表、查询、提取有限的记录和添加结果

MYSQL数据库连接表、查询、提取有限的记录和添加结果
EN

Stack Overflow用户
提问于 2012-11-06 00:15:44
回答 2查看 85关注 0票数 2

我的数据库中有两个表,我试图使用一个查询从这两个表中获取特定报表的数据。

表一是“电影”,它有以下几个字段:

  • Movies_ID
  • 名字
  • 季节

表二是每部电影的票房收入:

  • Boxoffice_ID
  • Movies_ID
  • 日期
  • 数量

我想运行一个查询,比较给定季节中每部电影的开头周末,并将其作为一个数据集返回,并将所收集的金额相加在一起。所以我想把每部电影都拍下来,为每部电影拿到头三天的票房,然后把它们加起来,这样我就可以得到这样的查询了

  1. 电影A,4910万
  2. 电影B,4,220万
  3. 电影C,2,950万

请注意,收集的金额只需要输出数字,我会处理格式。我只是很难弄清楚如何只查询每部电影的前三天票房,并把它们加在一起。

我知道我可以运行一个查询,获得票房的电影,然后循环使用它,然后重新查询数据库,但是我知道,对于很多电影来说,这并不是最有效的方法。我不确定是否有办法在一个查询中完成所有这些(每部电影的前三天加在一起),但我想看看是否有更先进的知识可以帮助我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-06 00:19:51

代码语言:javascript
复制
SELECT  a.Name, SUM(COALESCE(b.Amount,0)) totalAmount
FROM    Movies a
        LEFT JOIN BoxOffice b
            ON a.Movies_ID = b.Movies_ID
WHERE   b.date BETWEEN DATE_ADD(CURDATE(),INTERVAL -3 DAY) AND CURDATE()
GROUP BY a.Name

如果CURDATE()的数值是2012-11-06年(即今天),它将计算从2012-11-03年到2012-11-06年。

后续问题,你是如何计算日期的?白天?每周一次?不然呢?

更新1

代码语言:javascript
复制
SELECT  a.Name, SUM(COALESCE(b.Amount,0)) totalAmount
FROM    Movies a
        LEFT JOIN BoxOffice b
            ON a.Movies_ID = b.Movies_ID
        LEFT JOIN
        (
            SELECT  movies_ID, MIN(date) minDate
            FROM    BoxOffice
            GROUP BY Movies_ID
        ) c ON a.Movies_ID = c.Movies_ID
WHERE   DATE(b.date) BETWEEN DATE(c.minDate) AND 
                             DATE(DATE_ADD(c.minDate,INTERVAL 3 DAY))
GROUP BY a.Name
票数 1
EN

Stack Overflow用户

发布于 2012-11-06 00:20:34

只需加入Movies_ID上的表,并在发布日期和日期为3天之间添加WHERE和TIMEDIFF。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13242532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档