【问题标题】:SQL Query with partial data带有部分数据的 SQL 查询
【发布时间】:2019-11-26 17:34:26
【问题描述】:

我有两个 SQL 表:

夹具表:

事件表

我想查询表,以便计算某些特定事件。例如,有多少次主队在 25 分钟后 2-0。在这种情况下,它只会是一次(id 1)。

我可以查询灯具的一侧,但不能与另一侧连接。我遇到的另一个问题是在不存在目标时进行查询。例如,如果我想在 25 分钟后查询谁是 0-0,我无法想象如何查询没有信息的伯恩利 vs 南安普顿比赛的事件表?

任何帮助将不胜感激!

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您可以使用joincase 表达式带来所需的基本数据:

    select e.*,
           (case when e.name = f.home then 'home' else 'away' end) as side
    from events e join
         fixtures f
         on f.id = e.id;
    

    那么对于您的查询,我将使用它作为子查询。让灯具符合您的条件:

    select id
    from (select e.*,
                 (case when e.name = f.home then 'home' else 'away' end) as side
          from events e join
               fixtures f
               on f.id = e.id
         ) e
    where time <= 25
    group by id
    having sum( side = 'home' and type = 'Goal' ) = 2 and
           sum( side = 'away' and type = 'Goal' ) = 0;
    

    如果您想要计算匹配项,请使用额外的子查询。

    【讨论】:

    • 这绝对是完美的。非常感谢您的帮助戈登!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    • 2018-09-15
    • 2013-07-12
    相关资源
    最近更新 更多