Как сделать это соединение с запросом TSQL? - PullRequest
0 голосов
/ 16 января 2012

У меня есть таблица с именем USERS, у которой есть внешний ключ к таблице GROUPS (пользователь может принадлежать одному или отсутствовать GROUPS).Таблица USERS также содержит столбец ISDELETED (столбец char с T или F).

Мне нужен запрос для получения всех GROUPS и всех USERS, которыене удаляются, если все пользователи в GROUP удалены или не определены пользователи. Мне нужен запрос для возврата NULL для этого GROUP.

Я попытался выполнить следующий запрос:

SELECT     GROUPS.*, USERS.*
FROM       GROUPS INNER JOIN
                  USERS ON GROUPS.ID = USERS.GROUPID
WHERE USERS.ISDELETED = 'F'

Но этот запрос не возвращает пустые группы.SQL и я не лучшие друзья в мире, некоторая помощь будет отличной, спасибо.

Ответы [ 3 ]

2 голосов
/ 16 января 2012

Если вы хотите, чтобы все группы, независимо от совпадения в таблице пользователей, использовали левое внешнее объединение:

SELECT     GROUPS.*, USERS.*
FROM       GROUPS 
           LEFT OUTER JOIN
           USERS 
           ON GROUPS.ID = USERS.GROUPID AND USERS.ISDELETED = 'F'
1 голос
/ 16 января 2012

Вам просто нужно сделать левое внешнее объединение -

SELECT     GROUPS.*, USERS.*
FROM       GROUPS LEFT OUTER JOIN
                  USERS ON GROUPS.ID = USERS.GROUPID
WHERE USERS.ISDELETED = 'F'

Вот ссылка, которую я хотел бы использовать, чтобы напомнить себе о различиях в соединениях sql.

0 голосов
/ 16 января 2012

Вам нужно использовать оператор LEFT OUTER JOIN вместо INNER JOIN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...