代码之家  ›  专栏  ›  技术社区  ›  Zoitc2014

如何加入我的“客户机”和“消息”表?

  •  2
  • Zoitc2014  · 技术社区  · 14 年前

    有两个表:

    Clients
    ___________
    idClient int
    login varchar
    
    Messages
    ___________
    idMessage int
    dateWakeup datetime
    .... other fields
    

    我需要让每个客户机在给定的时间范围内计算表中消息的条目数。我试过这样的方法:

    SELECT c.login, count(m.idMessage) FROM Clients c, Messages m
    where
        m.idClient=c.idClient and m.dateWakeup>'2010-09-01 00:00:01'
        and m.dateWakeup<'2010-10-01 00:00:01';
    

    3 回复  |  直到 8 年前
        1
  •  2
  •   eumiro    14 年前

    使用时 COUNT(...) ,你必须 GROUP BY 您的结果:

    SELECT c.login, count(m.idMessage)
    FROM Clients c, Messages m
    where m.idClient=c.idClient
    and m.dateWakeup>'2010-09-01 00:00:01'
    and m.dateWakeup<'2010-10-01 00:00:01'
    GROUP BY c.login
    
        2
  •  0
  •   Extrakun    14 年前
    SELECT c.login, count(m.idMessage) FROM Clients c, Messages m  
    where m.idClient=c.idClient and m.dateWakeup>'2010-09-01 00:00:01' and
    m.dateWakeup<'2010-10-01 00:00:01' GROUP BY c.login;
    

    像COUNT()这样的聚合函数需要一个GROUP…BY

        3
  •  0
  •   Pramendra Gupta    14 年前

    试试这个

    SELECT c.login, count(m.idMessage) FROM Clients as c
    INNER JOIN Messages as m
    ON m.idClient=c.idClient
    WHERE m.dateWakeup BETWEEN '2010-09-01 00:00:01' and '2010-10-01 00:00:01'