Bonjour,

Je vous expose la situation avant de vous donner la problématique :
J'ai un traitement qui prend des fichiers en entrée. Pour chaque fichier traité j’insère des données dans une table et je flague un champ traitement à "R". Si un fichier passe 2 fois par erreur j'insère quand même les données mais je flague le champ traitement à "D" pour savoir que ce fichier a déjà été traité.

Mon serveur est tombé parce que je lui ai donné trop de fichiers en entrée! Et je me retrouve avec des données dans ma table qui ne sont pas correcte : j'ai des enregistrement à "D" sans pendant à "R".

Mes enregistrements sont uniques relativement à 6 champs.

Je cherche à écrire une requête SQL qui me permette d'identifier tous les enregistrements qui sont à "D" mais qui n'existent pas à "R" dans ma table en fonction de mes 6 champs clé.

J'ai essayé ce genre de chose mais sans résultat :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
select * from ( 
  (SELECT champ1, champ2, champ3, champ4, champ5, champ6, champ7, champ8, traitement
    FROM maTable 
      WHERE date_traitement='2013/06/15') a
  inner join
  (SELECT champ1, champ2, champ3, champ4, champ5, champ6, champ7, champ8, traitement
    FROM maTable 
      WHERE date_traitement='2013/06/15') b
 
    on   a.champ1 = b.champ1 
    and a.champ2 = b.champ2
    and a.champ3 = b.champ3
    and a.champ4 = b.champ4
    and a.champ5 = b.champ5
    and a.champ6 = b.champ6
    and a.champ7 = b.champ7
    and a.champ8 = b.champ8
    )
    where a.traitement='R' and b.traitement='D';
Est-ce que quelqu'un peut m'aider a construire correctement cette requête ?

Merci d'avance pour votre aide.