объединить 2 запроса - PullRequest
0 голосов
/ 06 марта 2012

У меня есть два запроса, которые я хотел бы объединить Есть 4 таблицы, которые связаны между собой. пользователь, группа, политика, источник

1-й запрос. Я получаю пользователей с соответствующим идентификатором политики.

1-й запрос:

Select users.ID as UserID,users.Username,   
policy.ID as PolicyID,policy.PolicyName 
from users join groups on group.ID = user.groupID_FK 
join policy on users.policyID_FK = policy.ID

2-й запрос: здесь мне нужно сопоставить policyID_FK и применить путь. тип источника должен быть 0, возможно, что для этого policyID_FK нет записи типа источника данных o.

Select Path, policyID_FK from source
WHERE SourceType = 0 and policyID_FK  = 1

Здесь вместо того, чтобы указывать policyID_FK = 1, я хочу присоединить этот запрос к вышеуказанному запросу.

Пожалуйста, помогите. Я знаю, я не очень ясно, но, пожалуйста, спросите, если вы что-то не понимаете.

Спасибо

Ответы [ 2 ]

2 голосов
/ 06 марта 2012
Select users.ID as UserID,users.Username, policy.ID as PolicyID,policy.PolicyName, source.Path
from users join groups on group.ID = user.groupID_FK 
   join policy on group.policyID_FK = policy.ID
   left join source
      on group.policyID_FK = source.policyID_FK
      and SourceType = 0 

Используйте левое соединение, если вы знаете, что в правой таблице могут отсутствовать соответствующие записи. Добавьте любой фильтр, кроме вашего, к фильтру с левым соединением, потому что если вы поместите его туда, где он будет удалять строки, которые вы хотите извлечь.

1 голос
/ 06 марта 2012

Это то, что вы хотите?

Select  users.ID as UserID,
        users.Username,   
        policy.ID as PolicyID,
        policy.PolicyName,
        source.Path
FROM    users INNER JOIN groups 
            ON group.ID = user.groupID_FK 
        INNER JOIN policy 
            ON users.policyID_FK = policy.ID
        INNER JOIN source 
            ON users.policyID_FK = source.policyID_FK
-- You can add conditions here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...