Bonjour à tous, j'ai la table suivante :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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Finger_Prints (ID int , PERSON_ID int , SIGNATURE object, MARQUE varchar)
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 .
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}
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).
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
J’espère que j'ai bien détaillé
Merci d'avance![]()
Partager