2016-11-02 2 views
0

Ich habe eine Tabelle mit Benutzerinformationen, eine Tabelle mit Client-Informationen und eine Tabelle mit FTP-Informationen. Ich muss alle drei Tabellen verbinden und dann die Datensätze in der FTP-Tabelle auswählen, die mit allen aktiven Benutzern in der Benutzertabelle übereinstimmen. Die Client-Tabelle und die Benutzertabelle enthalten eine Client-ID und der Client-Name hat einen entsprechenden Namen. Ich brauche die endgültigen Ergebnisse der SQL-Abfrage, um den Client-Namen, den Benutzernamen und das FTP-Verzeichnis bereitzustellen.SQL-Abfrage mit Distinct

Clients

ClientCode 
ClientName 
Status 

UsersAdminSFTDirectory

IndexNo 
UserName REFERENCES Users(UserName) 
AccessDir 

UsersAdmin

us_ID 
UserName 
Status 
ClientCode 

Hier ist, was ich habe bisher. Jede Hilfe wird sehr geschätzt.

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

Randnotiz ... entfernen 'WHERE c.ClientName LIKE '%'' es wird immer wahr sein und ist ein sinnloser Vergleich. – scsimon

+0

Hallo und willkommen in SO. Wir können helfen, aber wir brauchen noch mehr Details. Hier ist ein großartiger Ort, um anzufangen. http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

+0

Die Benutzer Tabelle enthält Spalten für Passwort, Benutzer-ID (Benutzername), Status . –

Antwort

0

Von Ihrer Beschreibung denke ich, dass die folgende Abfrage produzieren würde, was Sie wollen. Beachten Sie, dass bei mehreren FTP-Sites für jeden Benutzer mehrere Zeilen vorhanden sind.

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; 

Sie auch ‚alle aktiven Benutzer in der Benutzertabelle‘ erwähnt, so dass Sie ein WHERE u.Status = 'Active' oder so etwas hinzufügen möchten.