2013-08-05 108 views
0

我回到了以前的類似問題。這應該是一件簡單的事情,但不能讓我頭腦發熱。下面是表格的概述以及我試圖用這個子查詢實現的內容。我使用SQL Server 2008的加入表時SQL子查詢

用戶 這包含用戶的列表

登錄審計 包含登錄嘗試的列表。它擁有的用戶ID和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

任何援助將不勝感激。

感謝 缺口

回答

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 
+0

完美。謝謝! –

0

您是否希望

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

更換您的子查詢,然後在與 「l.lastLogin」

的功能,你主查詢替換 「l.loginDate」想要的是由彙總查詢中的MAX()函數提供的,而不是TOP()函數。

+0

我剛剛試圖剔除兩者,但無法選擇第一個響應。兩者都是正確的!非常感謝 –