2016-11-02 3 views
0

У меня есть таблица с информацией о пользователе, таблица с информацией о клиенте и таблица с информацией о FTP. Мне нужно соединить все три таблицы, а затем выбрать записи в таблице FTP, которые соответствуют всем Активным пользователям в таблице User. Таблица Client и Таблица пользователей содержат идентификатор клиента, а имя клиента имеет соответствующее имя. Мне нужны конечные результаты SQL-запроса для предоставления имени клиента, имени пользователя и каталога FTP.SQL Query with Distinct

Клиенты

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

Таблица пользователей содержит столбцы для пароля, идентификатора пользователя (имя пользователя), статуса , –

ответ

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' или что-то подобное.