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

Langage SQL Discussion :

Doublons, rupture de numérotation


Sujet :

Langage SQL

  1. #1
    Membre du Club

    Homme Profil pro
    Directeur comptable
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Points : 50
    Points
    50
    Par défaut Doublons, rupture de numérotation
    Bonjour,

    Je souhaiterais rédiger une requête en SQL pour détecter des doublons dans une table, une autre pour déceler des ruptures dans une séquence de numérotation et enfin une requête décelant l’absence d’une liste de données dans une table.

    Je vous remrcie d'avance de votre aide.
    Passionné de programmation et d'informatique des années 80/90, je collectionne ordinateurs, livres, magazines... Ma collection : http://www.auditsi.eu/?page_id=1983 ; N'hésitez pas à me contacter !

  2. #2
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    salem

    si tu veux detecter les doublants du cles ou...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(cle),cle from table group by cle
    exp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(nom),nom,prenom from table group by nom,prenom
    BON COURAGE
    Zoheir BOUSSAFI
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  3. #3
    Membre du Club

    Homme Profil pro
    Directeur comptable
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Points : 50
    Points
    50
    Par défaut
    Salut,

    Merci de ta réponse, je n'aurais pas pensé à cette solution...

    Et pour mes deux autres problèmes, as-tu une idée ?
    Passionné de programmation et d'informatique des années 80/90, je collectionne ordinateurs, livres, magazines... Ma collection : http://www.auditsi.eu/?page_id=1983 ; N'hésitez pas à me contacter !

  4. #4
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    Salem
    pour deceler l'absence de donnees ds une table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select nom_champ from table where nom_champ is null
    pour decouvrir la rupture d'une sequence je trouve qu'il ya la verification visuelle par interval par exemple
    Zoheir BOUSSAFI
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  5. #5
    Membre du Club

    Homme Profil pro
    Directeur comptable
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Points : 50
    Points
    50
    Par défaut
    C'est quoi "interval" ? C'est une fonction SQL ?
    Passionné de programmation et d'informatique des années 80/90, je collectionne ordinateurs, livres, magazines... Ma collection : http://www.auditsi.eu/?page_id=1983 ; N'hésitez pas à me contacter !

  6. #6
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    Re;
    interval est une plage de numeros.


    tu peut faire une analyse visuelle;par expemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table where champ_num<100
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table where champ_num between 101 and 200
    sinon
    tu peut meme assimiler ....

    http://www.developpez.net/forums/sho...d.php?t=433115

    n'hesite pas de poser des questions..
    Bon courage
    Zoheir BOUSSAFI
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  7. #7
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Si j'ai compris votre demande, vous aimeriez recupérer les séquences manquantes sur une colonne incrémentée de 1 en 1 ?

    Ce genre de requete vous ramenera les premieres ruptures de séquences trouvées (si le id_champ est une séquence de 1 en 1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT 
       a.id_champ+1
    FROM MaTable a INNER JOIN MaTable b
            ON (a.id_champ+1<> b.id_champ)
    WHERE 
       b.id_champ=(SELECT MIN(c.id_champ) 
                             FROM Matable c 
                             WHERE c.id_champ>a.id_champ)
    Bon courage
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  8. #8
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut felicitation
    salem
    tres bonne idee Yanika_bzh ;
    ce que j'ai propose c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Table1.code
    FROM Table1
    WHERE (((Table1.code) Not In (select Table2.code from table2)));
    table1 est une teable supplementaire 1....600 par exemple


    Bon courage
    Zoheir BOUSSAFI
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  9. #9
    Membre du Club

    Homme Profil pro
    Directeur comptable
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Points : 50
    Points
    50
    Par défaut
    J'avais rédigé cette requête :

    SELECT FacturesCIALE.numpièce
    FROM [SELECT FacturesCIALE.numpièce-1 as np2, FacturesCIALE.numpièce as numpièce2 from FacturesCIALE]. AS FacturesCIALE2 RIGHT JOIN FacturesCIALE ON FacturesCIALE2.np2 = val(FacturesCIALE.numpièce)
    WHERE (FacturesCIALE2.numpièce2 is null);

    Mais je ne la trouve pas très lisible...
    Passionné de programmation et d'informatique des années 80/90, je collectionne ordinateurs, livres, magazines... Ma collection : http://www.auditsi.eu/?page_id=1983 ; N'hésitez pas à me contacter !

  10. #10
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    Salem


    pour plus claire;

    la table1 est une table supplementaire sert a la comparer avec table2 qui table originale.
    table1 est la plus complet 1..600...
    et pour optimiser le code, de preferable,tu utilises les alias des table

    from table A


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Table1.code
    FROM Table1 LEFT JOIN table2 ON Table1.code = table2.code
    WHERE (table2.code) Is Null);
    cette solution la plus rapide et simple.
    Con courage
    Zoheir BOUSSAFI
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  11. #11
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Un jointure avec une seconde table est a proscrire car :

    - utilisation physique inutile
    - limitations de données, si vous sequencez sur plusieurs millions, il faudrait autant d'enregistrements dans cette table.

    Bon courage
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  12. #12
    Membre du Club

    Homme Profil pro
    Directeur comptable
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Points : 50
    Points
    50
    Par défaut
    Bonjour à tous,

    Je suis assez d'accord ; je manipule des tables de plusieurs dizaines de milliers de lignes et le résultat est assez long à obtenir avec une jointure (alors que mon miscro est récent).

    Mais si je n'emploie pas de jointure, comment puis-je obtenir les ruptures de séquence ?

    Par exemple, imaginons une table :

    ligne référence
    1 10010
    2 10011
    3 10013
    4 10014
    5 10020

    Est-ce qu'il est possible dans une requête de comparer un champ de la ligne n avec le champ de la ligne n-1 par exemple :

    SELECT * FROM table WHERE référence <> référence ligne antérieure + 1

    Si ce genre de formulation était possible mon problème de détection de rupture de séquence numérique serait réglé et le résultat de la requête serait :
    3 10013
    5 10020

    On peut toujours rêver !

    Merci à tous de vous être creusé les méninges
    Passionné de programmation et d'informatique des années 80/90, je collectionne ordinateurs, livres, magazines... Ma collection : http://www.auditsi.eu/?page_id=1983 ; N'hésitez pas à me contacter !

  13. #13
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    La requete que je vous ai postée ne satisfait pas ce genre de question ?

    Bon courage
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  14. #14
    Membre du Club

    Homme Profil pro
    Directeur comptable
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Points : 50
    Points
    50
    Par défaut
    Je ne sais pas : je l'ai lancé plusieurs fois et ACCESS semble bloqué... les tables que je traite sont très longues.
    Passionné de programmation et d'informatique des années 80/90, je collectionne ordinateurs, livres, magazines... Ma collection : http://www.auditsi.eu/?page_id=1983 ; N'hésitez pas à me contacter !

  15. #15
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Essayez

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT  
       a.id_champ+1 
    FROM 
        MaTable a 
    WHERE 
       NOT EXISTS (
              SELECT  
                 1 
             FROM 
                 MaTable b 
             WHERE 
                 b.id_champ=a.id_champ+1
              )
    Courage
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

Discussions similaires

  1. Doublon des titres de colonne suite à une rupture
    Par Alexis33 dans le forum Webi
    Réponses: 5
    Dernier message: 02/11/2011, 14h17
  2. [AC-2003] Numéroter les doublons dans une requête en utilisant une fonction VBA
    Par maldan dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/09/2009, 16h46
  3. Réponses: 1
    Dernier message: 23/09/2009, 15h38
  4. Réponses: 17
    Dernier message: 11/03/2009, 09h35
  5. numéroter des doublons
    Par Drozo dans le forum Access
    Réponses: 3
    Dernier message: 25/07/2006, 13h39

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