2016-11-02 89 views
0

我有一個包含用戶信息的表格,一個包含客戶信息的表格和一個包含FTP信息的表格。我需要加入所有這三個表格,然後在FTP表格中選擇與用戶表格中所有活動用戶相匹配的記錄。客戶端表和用戶表包含客戶端ID,客戶端名稱具有相應的名稱。我需要SQL查詢的最終結果來提供客戶名稱,用戶名和FTP目錄。獨特的SQL查詢

客戶

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

附註...刪除'WHERE c.ClientName LIKE'%''它永遠是真的,是一個毫無意義的比較。 – scsimon

+0

嗨,歡迎來到SO。我們可以提供幫助,但我們需要更多的細節。這裏是一個開始的好地方。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

+0

用戶表具有密碼,用戶ID(用戶名),狀態。 –

回答

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'或類似的東西。