Sql 在引用外部表时从子查询的顶部1联接
我从这个查询开始,它可以很好地工作:Sql 在引用外部表时从子查询的顶部1联接,sql,sql-server,tsql,Sql,Sql Server,Tsql,我从这个查询开始,它可以很好地工作: SELECT C.ContactSys , ... a bunch of other rows... FROM Users U INNER JOIN Contacts C ON U.ContactSys = C.ContactSys LEFT JOIN UserWatchList UW ON U.UserSys = UW.UserSys LEFT JOIN Accounts A ON C.AccountSys
SELECT
C.ContactSys
, ... a bunch of other rows...
FROM Users U
INNER JOIN Contacts C ON U.ContactSys = C.ContactSys
LEFT JOIN UserWatchList UW ON U.UserSys = UW.UserSys
LEFT JOIN Accounts A ON C.AccountSys = A.AccountSys
WHERE
C.OrganizationSys = 1012
AND U.UserTypeSys = 2
AND C.FirstName = 'steve'
现在,我得到了这个要求:
对于访问者搜索返回的每个访问者,使用ContactSys,在GuestLog表中获取该联系人的最新条目,然后从GuestLog表中返回列ABC和XYZ
我在这方面遇到了麻烦。我需要这样的东西(我想)
只是这不是因为联接上的子查询对外部表一无所知
我一直在看这些帖子和它们的答案,但我很难将它们翻译成我的需要:
如果这是您想要的逻辑,您可以使用
外部应用
:
SELECT C.ContactSys, GL.ABC, GL.XYZ,
... a bunch of other columns ...
FROM Users U JOIN
Contacts C
ON U.ContactSys = C.ContactSys LEFT JOIN
UserWatchList UW
ON U.UserSys = UW.UserSys LEFT JOIN
Accounts A
ON C.AccountSys = A.AccountSys OUTER APPLY
(SELECT TOP 1 gl.*
FROM GuestLog gl
WHERE gl.ContactSys = C.ContactSys
ORDER BY gl.GuestLogSys DESC
) GL
WHERE C.OrganizationSys = 1012 AND
U.UserTypeSys = 2 AND
C.FirstName = 'steve'
这似乎奏效了!谢谢我将继续阅读外部应用程序。
SELECT C.ContactSys, GL.ABC, GL.XYZ,
... a bunch of other columns ...
FROM Users U JOIN
Contacts C
ON U.ContactSys = C.ContactSys LEFT JOIN
UserWatchList UW
ON U.UserSys = UW.UserSys LEFT JOIN
Accounts A
ON C.AccountSys = A.AccountSys OUTER APPLY
(SELECT TOP 1 gl.*
FROM GuestLog gl
WHERE gl.ContactSys = C.ContactSys
ORDER BY gl.GuestLogSys DESC
) GL
WHERE C.OrganizationSys = 1012 AND
U.UserTypeSys = 2 AND
C.FirstName = 'steve'