0

以前に発生した同様の問題に戻りました。それは単純なことのはずですが、頭に浮かぶことはありません。テーブルの概要と、このサブクエリで達成しようとしていることを以下に示します。SQL Server 2008 を使用しています。

ユーザー これにはユーザーのリストが含まれます

Login Audit ログイン試行のリストが含まれます。userID と loginDate (日時フィールド) を保持します。

私が達成しようとして いるのは、ユーザーの行と監査テーブルからの最終ログイン日を表示できるようにすることです。

これが私の質問です。素人の観点からは理にかなっています。;-)

SELECT  u.userID, u.fName, u.sName, l.loginDate
   FROM    Users AS u LEFT OUTER JOIN
                      (SELECT    TOP (1) loginDate, userID
                        FROM   LoginAudit) AS l ON l.userID = u.userID
   WHERE   (u.cliID = 1)

これは、最後にログインしたユーザーの最後を引き戻すだけloginDateです。ログインしているかどうかに関係なく、すべてのユーザーが戻ってくるようにしたかったのです。

任意の支援をいただければ幸いです。

ありがとうニック

4

2 に答える 2

1
select a.userid, a.fName, a.sName,
  max(b.loginDate)
from 
   users a 
   left outer join lastLogin b on a.userid = b.userid
group by a.userid, a.fName, a.sName
于 2013-08-05T19:22:22.023 に答える
0

サブクエリを次のように置き換えたい

SELECT userID, max(loginDate) as lastLogin FROM LoginAudit GROUP BY userID

次に、メインクエリの「l.loginDate」を「l.lastLogin」に置き換えます

必要な機能は、TOP() 関数ではなく、集計クエリの MAX() 関数によって提供されます。

于 2013-08-05T19:20:33.853 に答える