【问题标题】:Query Access with single table to calculate previous Basket results database使用单表查询访问以计算以前的篮子结果数据库
【发布时间】:2015-10-28 19:29:11
【问题描述】:

我必须对 Access 2010 数据库进行查询,以提取每个团队以前的积分结果。

我在篮子上有一个包含历史匹配结果的表格

The table is like this :
Table Name = History
ID Auto Increment
Date : datetime
Host : text
Guest: text
HostPoint:integer
GuestPoint:inetger

表格数据是这样的:

1     01/02/2015     BARCELONA     REAL MADRID     105  80
5     25/01/2015     BARCELONA     LAS PALMAS      65   73
7     24/01/2015     BARCELONA     JUVENTUS        80   75
10     15/01/2015    VALENCIA      REAL MADRID     101  120
11     14/01/2015    TOLEDO        REAL MADRID     101  100
15     14/01/2015    BARCELONA     PSG             105  60
18     11/01/2015    GALA          REAL MADRID     101  70

我想为每条记录生成一个表或查询,其中包含每支球队在前 3 场主场比赛中主场和客场比赛的最小和最大结果。

表格是这样的:

Table Name = HistoryResult
ID Auto Increment
Date : datetime
Host : text
Guest: text
HostPoint:integer
GuestPoint:inetger
MinHostHomePoint:integer
MaxHostHomePoint:integer
MinGuestAwayPoint:inetger
MaxGuestAwayPoint:inetger

例如,第一条记录的结果必须是这样的:

1     01/02/2015     BARCELONA     REAL MADRID     105  80    65  105   70  120
5     25/01/2015     BARCELONA     LAS PALMAS      65   73    80  105   0   0
7     24/01/2015     BARCELONA     JUVENTUS        80   75   105  105   0   0
10     15/01/2015    VALENCIA      REAL MADRID     101  120  0    0     70  100
11     14/01/2015    TOLEDO        REAL MADRID     101  100  0    0     70  70

我认为我必须使用别名和子查询,但我尝试了不同的解决方案来解决问题

【问题讨论】:

    标签: ms-access subquery


    【解决方案1】:

    试试下面的;

    SELECT History.ID, History.MatchDate, History.Host, History.Guest, History.HostPoint, History.GuestPoint, qryHomeMinMaxPoints.MinOfPoints AS MinHostHomePoint, qryHomeMinMaxPoints.MaxOfPoints AS MaxHostHomePoint, qryAwayMinMaxPoints.MinOfPoints AS MinGuestAwayPoint, qryAwayMinMaxPoints.MaxOfPoints AS MaxGuestAwayPoint FROM (History INNER JOIN (SELECT Team, Min(Points) AS MinOfPoints, Max(Points) AS MaxOfPoints FROM (SELECT MatchDate, Team, Points FROM (SELECT History.MatchDate, History.Host AS Team, History.HostPoint AS Points FROM History)  AS qryHomeMatches WHERE MatchDate In  (SELECT TOP 3 MatchDate  FROM   ( SELECT History.MatchDate, History.Host AS Team, History.HostPoint AS Points FROM History )   as qryHomeMatchesCopy  WHERE qryHomeMatchesCopy.Team = qryHomeMatches.Team  ORDER By MatchDate DESC))  AS qryHomeLastThree GROUP BY Team)  AS qryHomeMinMaxPoints ON History.Host=qryHomeMinMaxPoints.Team) INNER JOIN (SELECT Team, Min(Points) AS MinOfPoints, Max(Points) AS MaxOfPoints FROM (SELECT MatchDate, Team, Points FROM (SELECT MatchDate, Guest AS Team, GuestPoint AS Points FROM History)  AS qryAwayMatches WHERE MatchDate In  (SELECT TOP 3 MatchDate  FROM   ( SELECT MatchDate, Guest AS Team, GuestPoint AS Points FROM History )  as qryAwayMatchesCopy  WHERE qryAwayMatchesCopy.Team = qryAwayMatches.Team  ORDER By MatchDate DESC))  AS qryAwayLastThree GROUP BY Team)  AS qryAwayMinMaxPoints ON History.Guest=qryAwayMinMaxPoints.Team;
    

    【讨论】:

    • 嗨,谢谢你的帮助,但它给了我一个错误:最后一个 FROM 子句的语法错误:GROUP BY Team)
    • 检查字段名称和括号,以下链接包含查询工作正常的示例文件:1drv.ms/1MilZYH
    • 谢谢这工作正常!但是用我的数据库,非常非常慢,也只过滤今天的比赛,运行需要一个多小时:(而且我需要运行整整一个月
    猜你喜欢
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多