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 :

Suppression Les Doublons et plus Dans Une Requête


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 13
    Points : 11
    Points
    11
    Par défaut Suppression Les Doublons et plus Dans Une Requête
    Salut à Tous !

    J'aimerais savoir comment faire pour Supprimer/Éliminer des doublons dans une requête faisant appel à une dizaine de tables. Les Tables sont nommées par année c'est à dire "1994","1995","1996","1997","1998","1999","2000","2001","2002" et "2003".
    Aucun Enregistrement double n'existe dans toutes ces tables.

    La requête est crée pour être source de données par son mode SQL pour un état. Les résultats théoriquement attendus devraient afficher seulement 2 personnes en mode feuille de données et 2 états en aperçu avant impression.
    La personne 1 est sans aucune dette et la personne 2 avec des dettes des 3 dernières années soit une seule dette par année ("2001" "2002" "2003") sachant que la personne 2 n'est enregistrée qu'en 2001 dans la Base de Données

    L’exécution de la requête en mode feuille de données fait sortir le résultat suivant:

    - Pour la personne 2 (Les 4 Premiers Enregistrements)
    Pour "2001" 4 Enregistrements: Une dette et son doublon, et Un autre Sans dette (0.00) et son Doublon aussi.
    Pour "2002" Idem 2001
    Pour "2003" 4 Enregistrements: Une dette affichée 4 fois

    - Pour la personne 1 (Les 4 Derniers Enregistrements)
    Pour "2001" Idem 2001 Personne 2 avec ses dette et ses doublons , alors que la personne 1 est sans dette
    Pour "2002" Idem 2001 (Personne 1)
    Pour "2003" 4 Enregistrements: sans dette (0.00) affichée 4 fois
    Soit 8 Enregistrement au lieu de 2

    L’exécution de l'état en aperçu avant impression fait sortir le résultat suivant:
    Idem l’exécution de la requête mais avec 16 pages dont une page vierge entre 2 pages affichées.

    voilà le code de la requête en mode SQL et le résultat en mode feuille de données. ET MERCI D'AVANCE !

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [2000].Commune, [2001].Commune, [2002].Commune, [2003].Prénom, [2003].Nom, [2003].Commune, [1995].Commune, [1996].Commune, [1997].Commune, [1998].Commune, [1999].Commune, [1994].Article, [1994].Nom, [1994].Prénom, [1994].Adresse, [1994].Commune, [1994].[Code Térritoire], [1994].Année, [1994].Reste_à_Payer, [1995].Année, [1995].Reste_à_Payer, [1996].Année, [1996].Reste_à_Payer, [1997].Année, [1997].Reste_à_Payer, [1998].Année, [1998].Reste_à_Payer, [1999].Année, [1999].Reste_à_Payer, [2000].Année, [2000].Reste_à_Payer, [2001].Année, [2001].Reste_à_Payer, [2002].Année, [2002].Reste_à_Payer, [2003].Année, [2003].Reste_à_Payer
    FROM ((((((((1994 INNER JOIN 1995 ON [1994].Article = [1995].Article) INNER JOIN 1996 ON [1995].Article = [1996].Article) INNER JOIN 1997 ON [1996].Article = [1997].Article) INNER JOIN 1998 ON [1997].Article = [1998].Article) INNER JOIN 1999 ON [1998].Article = [1999].Article) INNER JOIN 2000 ON [1999].Article = [2000].Article) INNER JOIN 2001 ON [2000].Article = [2001].Article) INNER JOIN 2002 ON [2001].Article = [2002].Article) INNER JOIN 2003 ON [2002].Article = [2003].Article
    WHERE ((([1994].Article)=[Veuillez Saisir Le Numéro D'Article De L'Intéréssé]))
    ORDER BY [2003].Nom;

    Nom : dzsysteme.PNG
Affichages : 129
Taille : 17,2 Ko

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 21
    Points : 27
    Points
    27
    Par défaut
    Bonjour dzsysteme,

    Essaye avec ceci :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT [2000].Commune, [2001].Commune, [2002].Commune, [2003].Prénom, [2003].Nom, [2003].Commune, [1995].Commune, [1996].Commune, [1997].Commune, [1998].Commune, [1999].Commune, [1994].Article, [1994].Nom, [1994].Prénom, [1994].Adresse, [1994].Commune, [1994].[Code Térritoire], [1994].Année, [1994].Reste_à_Payer, [1995].Année, [1995].Reste_à_Payer, [1996].Année, [1996].Reste_à_Payer, [1997].Année, [1997].Reste_à_Payer, [1998].Année, [1998].Reste_à_Payer, [1999].Année, [1999].Reste_à_Payer, [2000].Année, [2000].Reste_à_Payer, [2001].Année, [2001].Reste_à_Payer, [2002].Année, [2002].Reste_à_Payer, [2003].Année, [2003].Reste_à_Payer
    FROM ((((((((1994 INNER JOIN 1995 ON [1994].Article = [1995].Article) INNER JOIN 1996 ON [1995].Article = [1996].Article) INNER JOIN 1997 ON [1996].Article = [1997].Article) INNER JOIN 1998 ON [1997].Article = [1998].Article) INNER JOIN 1999 ON [1998].Article = [1999].Article) INNER JOIN 2000 ON [1999].Article = [2000].Article) INNER JOIN 2001 ON [2000].Article = [2001].Article) INNER JOIN 2002 ON [2001].Article = [2002].Article) INNER JOIN 2003 ON [2002].Article = [2003].Article
    WHERE ((([1994].Article)=[Veuillez Saisir Le Numéro D'Article De L'Intéréssé]))
    ORDER BY [2003].Nom;

    J'ai juste rajouté la commande "DISTINCT" en début de requête, qui permet de supprimer les doublons.

    Par contre tu te complique la tache, si j'ai bien compris toute les tables son identiques (au niveau des champs de chaque table)? la seule chose qui change c'est l'année, qui est identifié par chaque nom de table ? Pourquoi ne pas tout regrouper dans une même table et rajouter un champ [Annee] ? Cette solution te faciliteras la vie avec tes requêtes SQL par la suite, puisque aucune jointure

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Bonjour Shooter422

    Merci de m'avoir répondu !

    J'ai déjà essayé la commande "DISTINCT". L'affichage est toujours le même avec ou sans cette commande.
    Je pense que la commande "DISTINCT" est valable pour les Doublons dans les Tables alors que ce n'est pas le cas pour les miennes (Tables) qui ne contiennent aucun Doublons.

    Concernant votre proposition qui consiste à regrouper toutes les tables en une seule, elle est très juste. Mais le client exige que chaque année doit avoir sa propre table pour des raisons réglementaires selon lui (Secteur étatique) puisqu'il reçoit annuellement des listes des contribuables consignées dans des registres

    Merci encore une fois Shooter422 d'avoir donner de votre temps pour me répondre.

  4. #4
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut
    Vous devez impérativement créer qu'une seule table afin de pouvoir traiter votre problématique de doublons.
    Pour l'aspect règlementaire de la chose, il vous suffirait simplement de créer année après année des tables d'archivage.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Salut !

    Merci pour votre conseil hyperion13 et d'avoir donner de votre temps pour me répondre

Discussions similaires

  1. Réponses: 8
    Dernier message: 02/08/2016, 19h19
  2. Réponses: 2
    Dernier message: 09/07/2008, 11h34
  3. Extraction de tous les Lundis du mois dans une requête
    Par cumpa100 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 07/02/2008, 14h15
  4. expression regulières supprimer les doublons de caratéres dans une chaine
    Par karimphp dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/12/2007, 14h26
  5. [MySQL] Eviter les doublons à l'insertion dans une base
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 26/01/2006, 15h26

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