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 :

SQL et Anagrammes


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 86
    Points : 85
    Points
    85
    Par défaut SQL et Anagrammes
    Bonjour à tous et à toutes.

    Je fais face à un "petit" soucis. Je dois comparer les champs de plusieurs tables, notamment sur un pivot Num_Serie.
    Le problème étant que ce pivot est généralement saisi manuellement par les utilisateurs (fichier comptable, inventaire, etc etc).

    Je dois établir des liens entre mes informations, mais un problème vient d'apparaitre, les utilisateurs sont, semble-t-il, des experts en anagrammes.

    Je m'explique, j'ai, par exemple, un Num_Serie qui vaut "FNCOO9146O5369".
    Son équivalent sur mon autre table est "FCNOO9146O5369".

    A première vue identique, pourtant Access me les identifie comme différents, après examen des chaines de caractère, il apparait que le NC au début du premier a été inversé dans le second.

    Un autre exemple: "FCNOO81555O8783" pour "FCNOO8155O8783" en face.
    Dans la deuxième, il manque un 5 en plein milieu.

    Je ne parle pas non plus des "O" qui sont des "0", et inversement.
    (Encore que pour ce point, un coup de replace, on uniformise le tout, ça marche).

    Tout cela montre des erreurs d'inattention/de frappe des utilisateurs, ce qui arrive à tout le monde.
    Mais du coup, je ne sais plus comment gérer mes données.

    Visuellement, je sais identifier qu'il s'agit de la même information ... Mais SQLement, je bloque.

    Et je ne suis même pas sûr que ce soit faisable / fiable (risque de doublon qui augmente exponentiellement dès lors que je modifie l'arrangement des caractères, je le sens venir de très loin).

    Si quelqu'un a une idée à me soumettre, je suis preneur.

    Merci d'avance,
    Cordialement,
    Delioneras

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Points : 35
    Points
    35
    Par défaut Anagrammes
    Pourquoi doivent-ils rentrer 2 fois la même donnée ? Ne serait-il pas plus simple d'appeler lors de la 2ème entrée un menu déroulant reprenant les n° déjà entrés dans l'autre table, afin d'éviter de faire rentrer une 2ème fois avec erreurs ... Le but des BdeD est justement d'éviter les doublons de ce style ...
    Je prends un peu en amont, désolée cela ne résoudra pas le pbe des données déjà rentrées, mais peut-être pour l'avenir ...
    Quant aux données déjà entrées, cela ne marche pas avec 'like' ou les recherches phonétiques (??pas regardé de près) http://access.developpez.com/sources...quete#Soundex1?

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    y'a combien de lignes à vérifier ?

    Philippe

  4. #4
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 86
    Points : 85
    Points
    85
    Par défaut
    Bonjour, et merci à vous deux pour vos réponses.

    @anthurbb
    La saisie est faite 2 fois car il s'agit d'une gestion et vérification d'inventaire.
    Il y a l'existant dans la base, et ce que note la personne en charge de l'inventaire terrain. Les deux pouvant donc se contredire et/ou entrainer des erreurs de saisie.

    Je suis bien d'accord sur le principe de saisir deux fois. Je vais même plus loin, pour moi, un pivot doit être obligatoirement être une clé système, unique et fortement indexée. Et non soumise à la saisie d'un utilisateur.
    Littéralement, une clé primaire.
    Mais ils ne font pas comme ça, et ce n'est pas à moi à refaire tout le système.

    @philben
    En tenant compte des restrictions que j'ai placé sur mes requêtes (localisation, année 2012, etc), ça concerne environ une trentaine de ligne (31 pour être précis).
    Mais ça peut monter dès lors que les critères de sélection changent.

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 884
    Points : 58 500
    Points
    58 500
    Billets dans le blog
    45
    Par défaut
    bonsoir,

    peut-être quelques pistes dans un article de sqlpro:
    Comparaison de motifs avec SQL Server 2000 - Fonctions pour le rapprochement de données

    évidemment tout reste à faire pour adapter à Access

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    une solution en VBA ici.

    Philippe

  7. #7
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 86
    Points : 85
    Points
    85
    Par défaut
    Bonjour, et merci à f-leb et philben

    La distance de Levenshtein ... C'est ce que j'ai trouvé de plus approchant/précis pour l'instant oui.
    J'ai une version implémentée sur Excel, mais le traitement est assez ... conséquent.

    Je vais regarder vos articles, sur SQL Server et Access, concernant l'implémentation de ces distances.

    Ca me donnera des pistes à suivre pour optimiser l'analyse des quelques 6 millions d'infos (88000 lignes dans le fichier comptable, et 785 informations à compléter dans mon inventaire. Risque d'erreur de saisie sur le numéro de saisie, il faut donc tout analyser. 88000 * 785 = 6 908 000, Excel aime pas. Pas du tout).

    Je vais regarder ça sur les moteurs de base de données, merci

  8. #8
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 86
    Points : 85
    Points
    85
    Par défaut
    Rebonjour,

    J'ai regardé les deux articles. J'ai déjà testé le levenshtein, mais le temps de traitement est trop important.

    J'ai cru comprendre que l'Inférence Basique était plus performante, notamment en terme de vitesse ?
    Si oui, j'ai une question pour f-leb. Au début de l'algo en transact-sql, la fonction renvoie 0 si source ou cible valent ''.

    Ne serait-ce pas plus logique de renvoyer la longueur de la chaine autre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IF source = '' RETURN LEN(cible)
    IF cible = '' RETURN LEN(source)
    En tout cas, merci, je cherchais justement à optimiser mes boucles

    Je vais tester ce que donne mon adaptation de l'inférence basique, avec tous mes remerciements.

    Delioneras

Discussions similaires

  1. L'avenir du BDE et des SQL Links révélé ! <officiel>
    Par Merlin dans le forum Bases de données
    Réponses: 12
    Dernier message: 02/06/2006, 11h18
  2. Pb migration Access / SQL server
    Par yoyo dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 25/04/2005, 11h39
  3. Backup BD SQL Server
    Par Ethmane dans le forum Administration
    Réponses: 3
    Dernier message: 07/06/2002, 01h42
  4. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 11h21

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