2014-01-22 2 views
0

Существует таблица, содержащая учетные данные, и таблица аудита, содержащая все действия, связанные с каждым учетным данными. Я пытаюсь выбрать все учетные данные, которые не имели определенного действия. Скажем, активность 8 - это рассматриваемая деятельность.Oracle выбор объекта не в группе/коллекции

select t1.credential 
from t1 join t2 on t1.credential=t2.credential 
where t2.activity <> 8; 

просто выбирает все отдельные учетные данные, которые НЕ 8. Кажется, что мне нужно сделать коллекцию первых, чтобы определить, какие учетные данные не обладает активностью по 8, в группе все учетные данные, чтобы увидеть, какие из них не имеют активности 8 ?

Любая помощь или предложения с благодарностью.

ответ

0

Это должно работать:

SELECT * 
FROM t1 
WHERE NOT EXISTS(SELECT 1 FROM t2 
       WHERE credential = t1.credential 
       AND activity <> 8) 
+0

Совершенный !! спасибо – user761758

0

Вот подход с использованием агрегации:

select t1.credential 
from t1 join 
    t2 
    on t1.credential = t2.credential 
group by t1.credential 
having sum(case when t2.activity = 8 then 1 else 0 end) = 0; 
Смежные вопросы