Bonjour à tous, j'ai la table suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Finger_Prints (ID int , PERSON_ID int , SIGNATURE object, MARQUE varchar)
Elle contient des enregistrements d'empreintes digitales pour des employés (le champs SIGNATURE contient l'empreinte), chaque employé normalement il a son PERSON_ID existant deux fois puisque il enregistre 2 doigts.

Par mauvaise manipulation et manque de contrôle dans l'application qui gère la base de données, y'en a des employés qui sont redondants ça veut dire leurs PERSON_ID existent soit 4,6,10,12,14 ou 16 fois (j'ai pu constater ça maintenant on s'en fiche ).

J'explique, prenant l'exemple d'un PERSON_ID qui se répète 10 fois, cela veut dire que cet employé a 10 fois ses empreintes enregistrées soit 5 fois chacun de ses 2 doigts comme illustre l'image ci dessous .
Nom : Capture.PNG
Affichages : 165
Taille : 58,2 Ko

Dans un premier temps j'ai réussi à écrire une requête qui me permet d'extraire les cas qui se répètent n fois {4,6,10,12,14 ou 16}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
SELECT 
"Time_stamp"."public"."finger_print"."id",
"Time_stamp"."public"."finger_print"."person_id",
"Time_stamp"."public"."finger_print"."signature",
"Time_stamp"."public"."finger_print"."marque"
FROM "Time_stamp"."public"."finger_print"
WHERE "Time_stamp"."public"."finger_print"."person_id" IN (
SELECT  "Time_stamp"."public"."finger_print"."person_id" 
 FROM "Time_stamp"."public"."finger_print" 
GROUP BY  "Time_stamp"."public"."finger_print"."person_id" HAVING COUNT(*)=10)
ORDER BY  "Time_stamp"."public"."finger_print"."person_id" ASC
Maintenant depuis le résultat généré je veux sélectionner que 2 enregistrements pour chaque PERSON_ID contenant chacun une empreinte (je ne veux pas que l'empreinte se répète).

J’espère que j'ai bien détaillé

Merci d'avance