SQL查询与不同

时间:2016-11-02 20:21:30

标签: sql sql-server distinct

我有一个包含用户信息的表,一个包含客户信息的表和一个包含FTP信息的表。我需要连接所有三个表,然后选择FTP表中与User表中所有活动用户匹配的记录。客户端表和用户表包含客户端ID,客户端名称具有相应的名称。我需要SQL查询的最终结果来提供客户端名称,用户名和FTP目录。

客户

ClientCode
ClientName
Status

UsersAdminSFTDirectory

IndexNo
UserName REFERENCES Users(UserName)
AccessDir

UsersAdmin

us_ID
UserName
Status
ClientCode

这是我到目前为止所拥有的。非常感谢任何帮助。

SELECT C.ClientName, 
       UASD.username,
       UA.emailaddress
FROM (
    SELECT DISTINCT userName FROM UsersAdminSFTDirectory
) AS UASD
JOIN UsersAdmin AS UA ON UASD.username = UA.username
JOIN Clients AS C ON UA.clientCode = C.clientCode
WHERE c.ClientName LIKE '%'

1 个答案:

答案 0 :(得分:0)

根据您的描述,我认为以下查询会产生您想要的内容。请注意,如果用户有多个FTP站点,则每个用户将有多行。

Select u.UserName,
    u.EmailAddress,
    c.ClientName,
    UASD.AccessDir
  From UsersAdmin As u
  Join Clients As c On u.ClientCode = c.ClientCode
  Join (Select Distinct UserName, AccessDir From UsersAdminSFTDirectory) As UASD
    On u.UserName = UASD.UserName;

您还提到了用户表中的所有活跃用户'所以你可能想要添加WHERE u.Status = 'Active'或类似的东西。