2017-01-09 2 views
0

Я пытаюсь вернуть ветви, у которых нет менеджера.Как вернуть ветки, у которых нет менеджера? (SQL)

Here are the tables

И это то, что я пробовал:

SELECT branchno, city FROM branch 
WHERE branchno IN 
(SELECT branchno FROM STAFF 
WHERE position <> 'Manager'); 

И возвращается:

branchno | city 
----------+---------- 
B005  | London 
B007  | Aberdeen 
B003  | Glasgow 
(3 rows) 
+0

Ваш запрос будет возвращать все ветви, у которых есть сотрудник, не являющийся менеджером. Что еще вы пробовали, как только этот запрос не вернул правильный результат? – dfundako

+1

http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557#285557 –

ответ

1

Вы можете легко сделать это с помощью not in

select * 
from branch 
where branchno not in (
    select branchno from staff 
    where position = 'Manager' 
); 
1

Существует много способов, вы можете использовать WHERE NOT EXISTS, как показано ниже. BTW, ваш опубликованный запрос должен также дать вам желаемый результат (за ваш заголовок). Что еще вы ищете?

SELECT b.branchno, b.city 
FROM branch b 
WHERE NOT EXISTS 
(SELECT 1 FROM STAFF WHERE branchno = b.branchno 
AND position = 'Manager'); 
Смежные вопросы