колонка псевдоним оракул 10 г - PullRequest
2 голосов
/ 19 октября 2010

Это кажется таким простым, но я не могу понять, как мне выполнить этот запрос: у меня есть таблица пользователей, подобная этой:

user_id | name | role
1       | abc  | a
2       | lol  | b
3       | f    | c

и таблица usersprojects (с пользовательскими и проектными PK)

projectid | userid
1         | 1
1         | 2
2         | 2
2         | 3

Как выбрать все столбцы пользователей, а также псевдоним логического столбца, «назначенный» проекту «1»

Я бы хотел получить такой результат:

user_id | name | role | assigned
1       | abc  | a    | true
2       | lol  | b    | true
3       | f    | c    | false

Запрос не будет выглядеть примерно так:

 Select user_id ,name, role,
  (users.user_id in (Select user_id from usersprojects where projectid=1)
    ) assigned;

Но он не работает ... как правильно выполнить этот запрос?

Ответы [ 3 ]

2 голосов
/ 19 октября 2010
SELECT
    user_id, name, role,
    CASE WHEN (SELECT COUNT(*) FROM UsersProjects up #
               WHERE up.user_id = u.user_id) > 0 
         THEN 'true' ELSE 'false' END assigned
FROM Users u
2 голосов
/ 19 октября 2010
 SELECT u.user_id ,name, role, NVL(projectId, 0) assigned
 FROM users u LEFT JOIN userprojects up ON (u.user_id = up.userid)
0 голосов
/ 19 октября 2010

Вам нужно левое внешнее соединение. Помните, что в Oracle нет типа данных boolean.

...