4 votes

Requête SQL - ID n'existe pas dans une autre table ou existe mais avec tous les enregistrements sont dans l'historique ?

J'ai une table T1

ID
1
2
3

et le tableau T2

ID    HISTORY
1       1
1       1
2       1
2       0 

Je dois sélectionner à partir de T1 tous les enregistrements qui n'existent pas dans T2 ou qui existent mais tous les enregistrements sont dans l'historique (drapeau historique =1).

Donc pour cela, mon résultat sera

1
3

Quelle est la requête SQL correcte pour cela ? Merci

24voto

Joe G Joseph Points 12384

Essayez ceci :

select * from T1
where ID not in(select ID from T2 where HISTORY_FLG!=1)

Démonstration de SQL Fiddle

3voto

Parado Points 13763

Essayez d'utiliser not exists

select * 
from t1 t
where not exists
     (
       select 1
       from t2 a
       where a.id = t.id
       and a.HISTORY <> 1
     )

Fiddle SQL DEMO

2voto

bishal Points 21

Essayez ça :

SELECT * from T1 
WHERE id not 
IN ( SELECT tb1.id FROM( SELECT id FROM T2 WHERE history=0 ) as tb1 )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X