IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

recherche de doublons sur une période


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Points : 29
    Points
    29
    Par défaut recherche de doublons sur une période
    Bonjour,

    Je n'arrive pas à me sortir d'un situation délicate concernant la recherche de doublons sur une période donnée.

    Je m'explique :
    J'ai une table avec des champs du type
    Nom, Prénom, Date, Heure. Tous les champs peuvent contenir des doublons et j'aurais besoin de ressortir dans une requête tous les doublons ou ces 4 champs sont à peu près identiques.

    Je dis à peu près car d'un point de vue strictement identique je sais faire. Ce qu'il me faudrais en fait c'est resortir les doublons pour lesquel 2 ou + lignes sont comprises dans un créneau d'1 h,

    càd :

    Toto prénom 28/12/1974 22h50
    Toto prénom 28/12/1974 23h15
    serait des doublons
    mais aussi
    Toto prénom 28/12/1974 23h50
    Toto prénom 29/12/1974 00h15

    mais
    Toto prénom 28/12/1974 22h50
    Toto prénom 28/12/1974 23h55
    Toto prénom 29/12/1974 00h56
    ne le serais pas


    Je ne vois pas vers quelle voie m'orienter pour arriver à ce que je voudrais.
    Je suis preneur de toute piste.

    Cordialement,
    TLImpala.

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 108
    Points : 5 231
    Points
    5 231
    Par défaut
    Bonsoir,

    Une requête de ce type répondrait au problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from matable a where (select count(*) from matable b where a.nom=b.nom and a.prenom=b.prenom and abs(a.date1-b.date1)<=1/24)>1
    Ca risque d'être un peu long si la table est importante...

    NB : ça suppose de grouper date & heure dans un seul champ (selon le standard habituel où l'heure est une fraction du jour) sinon ça complique un peu mais le principe est le même...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Bonsoir,

    Concernant le regroupement des champs Date & Heure, je l'avais déjà fait dans ma requête mais j'avais alors une erreure au lancement. Il vaut mieux je pense que je rajoute un champ DATEHEURE dans la table et que je le mette à jour par une requête update ?

    Dans ton code de requête, il semble y avoir référence à deux tables différentes mais si je ne m'abuse, je remplace a et b par le nom de mon unique table.

    Je me penche là-dessus de ce pas.

    Merci de cette piste.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    Toujours en recherche de solution j'en suis au code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [Doublons 9003].Nom, [Doublons 9003].Prénom, [Doublons 9003].DdN, [Doublons 9003].Time
    FROM [Doublons 9003]
    WHERE ((([Doublons 9003].Nom) In (SELECT [Nom] FROM [Doublons 9003] As Tmp GROUP BY [Nom],[Prénom],[DdN],[Time] HAVING Count(*)>1  And [Prénom] =[Prénom] And [DdN] = [DdN] And abs([Time]-[Time])<=1/24)))
    ORDER BY [Doublons 9003].Nom, [Doublons 9003].Prénom, [Doublons 9003].DdN, [Doublons 9003].Time;
    Mais cela ne me ressort pas les doublons espérés.

    le "abs([Time]-[Time])<=1/24" devrait me ressortir tous les doublons pour lequel l'unicité [Nom], [Prénom], [DdN] est avérée et dont la marge de prise en compte de l'unicité de [Time] est de 1h non ?

  5. #5
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 108
    Points : 5 231
    Points
    5 231
    Par défaut
    a et b sont 2 alias de la même table. Cela permet de comparer 2 enregistrements d'une table

    Citation Envoyé par TLImpala Voir le message
    abs([Time]-[Time])
    Tel quel, ceci vaut toujours 0

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Hello,

    Oui exact ce sera toujours égal à zéro. J'ai m...dé dans mon recopiage en ommettant la référence à l'alias.

    Je suis sur le point d'aboutir je pense d'autant que j'ai eu besoin de tester des champs supplémentaire au passage.

    Merci d'avoir regardé.

Discussions similaires

  1. [AC-2000] Recherche enregistrement sur une période antérieure à ma sélection
    Par Christ79 dans le forum VBA Access
    Réponses: 5
    Dernier message: 09/01/2014, 11h36
  2. Réponses: 9
    Dernier message: 25/09/2008, 19h49
  3. Recherche affectation sur une période
    Par rpg71 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/09/2008, 21h49
  4. Recherche de doublons sur une partie du nom
    Par ch851 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 30/11/2006, 21h08
  5. [Oracle 8i]Recherche doublon sur une même table
    Par fmoriet dans le forum Oracle
    Réponses: 3
    Dernier message: 01/08/2006, 10h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo