Elimination Doublons
Hichamus13
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
castours -
castours -
Bonjour tout le monde.
Je développe en PHP Mysql une application pour la gestion des présence des employés.
Les employés pointent avec leurs badges à l'arrivée et à la sortie.
Ces informations sont transmises ensuite vers un fihier Execl qui regroupe Nom Prénom Date et les heures.
Des fois par manque d'attention, les employés pointent 2 fois l'arrivée
ou la sortie avec un intervalle de quelques secondes.
J'a pu importer les données du fichier Excel sur ma base de données.
Mais je souhaiterais éliminer les doublons.
PS :Un doublon c'est quand il s'agit de la même personne mais la différence des heures est inférieure à 15 secondes.
La structure de ma table est
Nom Prénom, Date et Heure.
Donc en Gros, pour chaque Nom je souhaiterais comparer les heures et éliminer ensuite l'heure la plus récente.
Merci de votre aide
Je développe en PHP Mysql une application pour la gestion des présence des employés.
Les employés pointent avec leurs badges à l'arrivée et à la sortie.
Ces informations sont transmises ensuite vers un fihier Execl qui regroupe Nom Prénom Date et les heures.
Des fois par manque d'attention, les employés pointent 2 fois l'arrivée
ou la sortie avec un intervalle de quelques secondes.
J'a pu importer les données du fichier Excel sur ma base de données.
Mais je souhaiterais éliminer les doublons.
PS :Un doublon c'est quand il s'agit de la même personne mais la différence des heures est inférieure à 15 secondes.
La structure de ma table est
Nom Prénom, Date et Heure.
Donc en Gros, pour chaque Nom je souhaiterais comparer les heures et éliminer ensuite l'heure la plus récente.
Merci de votre aide
A voir également:
- Elimination Doublons
- Doublons photos - Guide
- Supprimer les doublons excel - Guide
- Supprimer les doublons photos gratuit - Télécharger - Nettoyage
- Supprimer les doublons (excel 2003) ✓ - Forum Excel
- Notepad++ supprimer les doublons - Forum Programmation
5 réponses
Bonjour,
Une piste de solution, à compléter car j'ignore comment faire + 15s avec mysql :
Un identifiant de salarié, qui doit exister dans un logiciel de pointage, serait plus pratique que nom prénom. Et il n'y a pas un indicateur entrée/sortie dans ton pointage qui devrait être lui aussi testé ?
Cdlt
Une piste de solution, à compléter car j'ignore comment faire + 15s avec mysql :
DELETE FROM pointage A WHERE EXISTS (SELECT * FROM pointage B WHERE A.nom = B.nom AND A.prenom = B.prenom AND A.date_heure > B.date_heure AND A.date_heure <= B.date_heure + 15s)
Un identifiant de salarié, qui doit exister dans un logiciel de pointage, serait plus pratique que nom prénom. Et il n'y a pas un indicateur entrée/sortie dans ton pointage qui devrait être lui aussi testé ?
Cdlt
Merci pour ta réponse rapide.
Cette fonction permet de convertir les heures en secondes.
Dans le tableau que je reçois, il ya que deux colomnes : Date avec regroupés Date + Heure et description regroupant Nom et Prénom
J'ai utilisé ton code dans cette manière :
Mais cela me sort l'erreur unexpected '*', expecting end of file
Cette fonction permet de convertir les heures en secondes.
function heure_to_secondes($heure){ $array_heure=explode(":",$heure); $secondes=3600*$array_heure[0]+60*$array_heure[1]+$array_heure[2]; return $secondes; }
Dans le tableau que je reçois, il ya que deux colomnes : Date avec regroupés Date + Heure et description regroupant Nom et Prénom
J'ai utilisé ton code dans cette manière :
$connect = mysqli_connect("localhost", "root", "", "employe"); $query="DELETE FROM tbl_excel A WHERE EXISTS ( SELECT *, substr(date, 1, 10), substr(date, 11, 20) FROM tbl_excel B WHERE A.description = B.description AND A.substr(date, 11, 20) > B.substr(date, 11, 20) AND heure_to_secondes(A.substr(date, 11, 20)) - heure_to_secondes(A.substr(date, 11, 20)) <=15 "; $result = mysqli_query($connect, $query);
Mais cela me sort l'erreur unexpected '*', expecting end of file
Je n'utilise pas mysql, ni php
Mais avant de tenter dans php, tu devrais tester le sql dans la console mysql en direct.
En général, on évite d'appeler un champ date, c'est souvent un mot réservé. Et ton champ il est de quel type ? chaine de caractère ou datetime ? car normalement dans le sql il y a de quoi effectuer des opérations sur les champs datetime, ce n'est pas pratique d'utiliser une chaine de caractère.
Mais avant de tenter dans php, tu devrais tester le sql dans la console mysql en direct.
En général, on évite d'appeler un champ date, c'est souvent un mot réservé. Et ton champ il est de quel type ? chaine de caractère ou datetime ? car normalement dans le sql il y a de quoi effectuer des opérations sur les champs datetime, ce n'est pas pratique d'utiliser une chaine de caractère.
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, suggestion:
delete p1 FROM `pt` as p1, pt as p2 WHERE p1.nom=p2.nom and p1.prenom=p2.prenom and p1.moment>p2.moment and p1.moment-p2.moment<15
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question