2012-04-24 96 views
0

这里我对sql查询有疑问。SQL QUERY获得两个日期范围之间的特定列的计数

在这种情况下我有一个表叫tblcrime:在这里我们将得到的总和(罪)在这里我跟踪MainID和sum(犯罪)查询将是这样的:

SELECT sum(o.crimeID) as crimeNumber,u.UserID 
    from tblcrime o 
    inner join tblSubContractor ts on 
    o.MainID=ts.SubContractorID 

从这里我将清洁香港在tblUSER这些subcontractorID

inner join tblUser u on 
    u.SubContractorID=ts.SubContractorID 

,我的疑问是,高达这里我会得到犯罪和适当的用户ID的总和,对于如。

UserID : 520 Totalcrime:6000 

,但有一个名为tblAudit,我们将得到logondate和用户ID,这是在这里跟踪另一个表..所以我想根据用户登陆(用户ID)显示犯罪......上次登录。因此,当用户登录时,在jquery通知中显示“自从上次登录以来已经完成了60个犯罪行为”。

我想要查询格式的帮助。

+0

你能告诉我们更多的有关表结构?即。是否有犯罪或tblSubContractor有任何可以使用的日期时间列 – Lex 2012-04-24 09:55:29

+0

这里tblAudit有登录日期coloumn traking用户是由userid,这是tblUSER的主要关键和tblcrime已'crimedate'coloumn它在哪里traks犯罪完成日期。 – RnR 2012-04-24 09:59:59

+0

此查询用户特定?即。你是否将用户ID作为参数传入? – Lex 2012-04-24 10:12:18

回答

0

我不确定,如果我理解你的问题是正确的,但可能是这样,你在找什么?

SELECT sum(o.crimeID) as crimeNumber,u.UserID 
from tblcrime o 
inner join tblSubContractor ts on o.MainID=ts.SubContractorID 
inner join tblUser u on u.SubContractorID=ts.SubContractorID 
where 
u.UserID = theOneYouAreLookingFor 
AND crimedate >= lastLogOn 
GROUP BY u.UserID 
0

首先,我怀疑调用SUM功能确实应该给COUNT。前者将指定列的值相加,而后者则为您提供行计数。

其次,你的tblcrime表存储犯罪加入的日期吗?我会假设它的确如此,我们来调用列DateAdded。下面的查询应该工作:

SELECT  COUNT(o.crimeID) AS crimeNumber, 
      u.UserID 
FROM  tblcrime o 
INNER JOIN tblSubContractor ts on o.MainID = ts.SubContractorID 
INNER JOIN tblUser u on u.SubContractorID = ts.SubContractorID 
INNER JOIN tblAudit a on a.userid = u.UserID 
WHERE  a.logondate < o.DateAdded 
GROUP BY u.UserID 
+0

Ya传递,但这里logondate是在另一个名为tblAudit的表上,而不是dateadded ter是另一个coloumn,叫做crimedate,它在其中传递crimedone的日期,但它在tblcrime中。因此,这里frm tblcrime我只能从tblcrime得到计数(犯罪),但我想从tblaudit跟踪的用户标识详细信息 – RnR 2012-04-24 23:55:26

+0

您能否更新问题以包含您的模式?没有它,几乎不可能正确回答你的问题。 – weenoid 2012-04-25 08:02:10

0

你可以找到该用户的最大auditdate:

SELECT sum(o.crimeID) as crimeNumber,u.UserID 
    from tblcrime o 
    inner join tblSubContractor ts on 
    o.MainID=ts.SubContractorID 
inner join tblUser u on 
    u.SubContractorID=ts.SubContractorID 
where o.crimeDate >= (select max(auditdate) from tblAudit where UserID = @UserID) 
相关问题