GROUP BY无效+选择三个表格



我有三个表会话

  • 驱动程序ID
  • 付款人ID
  • 日期注册
  • 会话ID
  • 付款人电子邮件

驱动程序

  • 驱动程序ID
  • 付款人ID(一个付款人可以有多个驱动程序(
  • 程序
  • 语言

付款人

  • 收款人ID
  • 电子邮件(我想从这里收到电子邮件,因为它可以更改,如果是,数据会在这里更改,但不会在会话中相互更改(

我想和驱动程序ID付款人ID电子邮件程序语言从注册日期到今天的天数会话数(会话ID数(

到目前为止,我所拥有的是:

SELECT days_between(D.DateRegistration, today()) as No.of.Days, COUNT (S.SessionID) as No.of.Sessions, D.DriverID, D.PayerID,   D.Language, D.Program, S.PayerEmail    (-- P.Email, commented) 
FROM Driver as D,  Sessions as S ( -- Payer as P, commented)
WHERE D.DriverID = S.DriverID
GROUP BY (S.DriverID)

我有两个问题:

  1. 我的计数不起作用,我想是因为GROUP BY,但我不知道如何继续
  2. 有没有可能像这样或以类似的简单方式匹配第三张表

我是SQL的新手,这是迄今为止我能做的最好的一次。

尽量避免隐式联接,因为可能会意外获得交叉联接,从而返回不正确的结果,尤其是在查询中有大量联接的情况下。

GROUP BY语句通常与聚合函数(COUNT((、MAX((、MIN((、SUM((和AVG(((一起使用,以将结果集分组为一列或多列,因此您应该在GROUP BY子句中的SELECT子句中提到这些列

SELECT 
D.DriverID, 
D.PayerID,  
D.Language, 
D.Program, 
P.PayerEmail, 
days_between(D.DateRegistration, today()) as No.of.Days,
COUNT (S.SessionID) as No.of.Sessions,  
FROM Driver as D
LEFT JOIN Sessions AS S ON D.DriverID = S.DriverID
LEFT JOIN Payer AS P ON P.PayerID = S.PayerID
GROUP BY 
D.DriverID, 
D.PayerID,  
D.Language, 
D.Program, 
S.PayerEmail,
days_between(D.DateRegistration, today()) 

最新更新