0

ここで、SQLクエリに関して疑問があります。

このシナリオでは、tblcrime というテーブルがあります。ここで sum(crime) を取得します。MainID を追跡し、sum(crime) クエリは次のようになります。

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

ここから、これらでchktblUSERしますsubcontractorID

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

ここまでで、犯罪の合計と適切なユーザーIDを取得できるかどうかは疑問です。たとえば、

UserID : 520 Totalcrime:6000

しかし、ここで追跡しているlogondateとuseridを取得する場所と呼ばれる別のテーブルがありtblAuditます..だから私はuserlogin(userid)に基づいて犯罪を表示したい...最後のログイン以来。そのため、ユーザーがログインすると、jquery 通知に「最後のログイン以降に 60 件の犯罪が行われました」と表示されます。

クエリ形式でヘルプが必要です。

4

3 に答える 3

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)
于 2012-04-25T08:26:00.993 に答える
0

まず、SUM関数の呼び出しは実際には にすべきだと思いますCOUNT。前者は指定された列の値を合計しますが、後者は行数を返します。

次に、あなたのtblcrimeテーブルには犯罪が追加された日付が保存されていますか? そうだと仮定して、 column と呼びましょう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
于 2012-04-24T10:53:44.717 に答える
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
于 2012-04-24T10:48:12.537 に答える