OVH Cloud OVH Cloud

soustraction de deux tables : NOT IN & MINUS

1 réponse
Avatar
Pif
Bonjour, je veux lister les employés qui ne sont pas manager
(auto-jointure).

Pour cela, j'ai écrit une requête :

select distinct(employee_id)
from employees
where employee_id not in
(select manager_id from employees );

Elle me renvoie 0 tuple au lieu de 89. Si je fais une soustraction
traditionnelle, cela marche (89 réponses) :

select distinct(employee_id) from employees
minus
select manager_id from employees ;


Quelqu'un peut il me dire pourquoi la premiere requête me retourne un
résultat vide et comment la corriger si possible ?

Plateforme : Oracle XE 10g / Win32.

Merci !

1 réponse

Avatar
Antoun
Stéphane Rondinaud wrote:
Bonsoir,
Antoun a écrit :

Pif wrote:

Bonjour, je veux lister les employés qui ne sont pas manager
(auto-jointure).





<snip>

pour des questions de perf (ça ne résoudra pas ta question), tu as
généralement intérêt à mettre un distinct dans la sous-requête (à tester).



... sauf bien sûr quand employee_id est la PK de la table employees,
hein! ;)



je ne vois pas ce que ça change. Nous parlons d'un distinct sur les
manager_id, histoire que la comparaison se fasse sur une liste de 10
plutôt que de 1000...