【问题标题】:MySQL view subquery with custom where clause?带有自定义where子句的M​​ySQL视图子查询?
【发布时间】:2015-09-25 13:11:25
【问题描述】:

我正在尝试在 MySQL 数据库上设计一个视图,该数据库存储有关足球(足球)的信息。

我的目标是创建一个返回所有进球和得分手基本信息的视图。这是视图过去外观的简化版本:

SELECT P.Name AS Player,
       P.TeamName AS Team,
       (SELECT COUNT(*)
        FROM Goals G
        WHERE G.Scorer = P.playerID) AS TotalGoals
FROM Players P

到目前为止,一切正常。当我只想在WHERE 子句中指定的某个赛季内计算进球数时,问题就开始了,如下所示:

SELECT * FROM GoalsView WHERE Season = 1

并且它只自动返回 WHERE 子句中的赛季进球数,就好像子查询被自动编辑使其看起来像:

[...]
(SELECT COUNT(*)
FROM Goals G
WHERE G.Scorer = P.playerID
AND Season=1) AS TotalGoals
[...]

我希望我说清楚了。感谢您的帮助!

【问题讨论】:

    标签: mysql view subquery


    【解决方案1】:

    一种可能的解决方案是

    SELECT P.Name AS Player,
       P.TeamName AS Team,
       (SELECT COUNT(*)
        FROM Goals G
        WHERE G.Scorer = P.playerID AND season=1 GROUP By season) AS TotalGoals
     FROM Players P
    

    我不知道你是否有单独的季节表或列

    【讨论】:

      【解决方案2】:

      为了访问goals.season,您必须加入两个表:

      select 
        p.name as player,
        p.teamname as team,
        count(goals.id) as totalgoals
      from players p
      left join goals g on g.scorer = p.playerid
      group by p.name, p.teamname;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-19
        • 2016-03-11
        • 2012-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多