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 :

souci avec SELECT Distinct


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 414
    Points : 106
    Points
    106
    Par défaut souci avec SELECT Distinct
    Bonjour,

    Je rencontre un souci dans la conception d'une requête qui me permet d'extraire les données d'une table sans doublons.
    A ce jour la T_Sogecarte contient 2647 enregistrements mais après contrôle par une requête pour trouver les doublons, je devrai avoir 2635 enregistrements.

    J'ai trouvé la fonction SELECT Distinct qui permet d'extraire les données hors doublons comme ci-dessous en utilisant pour clé l'identifiant et le n° de carte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT T_sogecarte.[identifiant salarié], T_sogecarte.[numero carte]
    FROM T_sogecarte;
    Le résultat est bon avec 2635 lignes.

    Mais quand je veux ajouter les champs que je souhaite exploiter, la requête me remonte la totalité des lignes 2647
    Il y a t'il une solution pour arriver à mes fins?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT T_sogecarte.[identifiant salarié], T_sogecarte.[numero carte], T_sogecarte.[civilité titulaire], T_sogecarte.[nom titulaire], T_sogecarte.[prénom titulaire], T_sogecarte.échéance, T_sogecarte.[état carte], T_sogecarte.[numero contrat], T_sogecarte.Email_address, T_sogecarte.RC_Local_ID, T_sogecarte.RC_Local_sigle, T_sogecarte.Employee_Status_Desc, T_sogecarte.[Numéro de prestation], T_sogecarte.BU_SU, T_sogecarte.S_BU_SU
    FROM T_sogecarte;
    Je vous remercie et vous souhaite une bonne journée.

  2. #2
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Bonjour
    essaie un peu ceci
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT T_sogecarte.[identifiant salarié], First(T_sogecarte.[numero carte]) AS [numero carte], First(T_sogecarte.[civilité titulaire]) AS [civilité titulaire], First(T_sogecarte.[nom titulaire]) AS [nom titulaire], First(T_sogecarte.[prénom titulaire]) AS [prénom titulaire], First(T_sogecarte.échéance) AS échéance , First(T_sogecarte.[état carte]) AS [état carte], First(T_sogecarte.[numero contrat]) AS [numero contrat], First(T_sogecarte.Email_address) AS Email_address , First(T_sogecarte.RC_Local_ID) AS RC_Local_ID, First(T_sogecarte.RC_Local_sigle) AS RC_Local_sigle, First(T_sogecarte.Employee_Status_Desc) AS Employee_Status_Desc, First(T_sogecarte.[Numéro de prestation]) AS [Numéro de prestation], First(T_sogecarte.BU_SU) AS BU_SU, First(T_sogecarte.S_BU_SU) AS S_BU_SU
    FROM T_sogecarte
    GROUP BY T_sogecarte.[identifiant salarié];
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  3. #3
    Membre régulier Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 414
    Points : 106
    Points
    106
    Par défaut
    Merci Bertiny,

    Ca fonctionne mais pas bien car la je perds 289 lignes au lieu de 12,
    Ne serait-ce pas la ligne ci-dessous qui supprime la clé entre l'identifiant salarié et le numéro de carte?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    First(T_sogecarte.[numero carte]) AS [numero carte],

  4. #4
    Membre régulier Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 414
    Points : 106
    Points
    106
    Par défaut
    Je viens de faire une expérience et en l'exécutant, la requête m'affiche le bon résultat
    En fait, pour retrouver ma clé j'ai créé un champ en concaténant l'identifiant et le n° de carte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT T_sogecarte.[identifiant salarié], First(T_sogecarte.[numero carte]) AS [numero carte], First(T_sogecarte.[civilité titulaire]) AS [civilité titulaire], First(T_sogecarte.[nom titulaire]) AS [nom titulaire], First(T_sogecarte.[prénom titulaire]) AS [prénom titulaire], First(T_sogecarte.échéance) AS échéance, First(T_sogecarte.[état carte]) AS [état carte], First(T_sogecarte.[numero contrat]) AS [numero contrat], First(T_sogecarte.Email_address) AS Email_address, First(T_sogecarte.RC_Local_ID) AS RC_Local_ID, First(T_sogecarte.RC_Local_sigle) AS RC_Local_sigle, First(T_sogecarte.Employee_Status_Desc) AS Employee_Status_Desc, First(T_sogecarte.[Numéro de prestation]) AS [Numéro de prestation], First(T_sogecarte.BU_SU) AS BU_SU, First(T_sogecarte.S_BU_SU) AS S_BU_SU, [identifiant salarié] & [numero carte] AS cle_concatener
    FROM T_sogecarte
    GROUP BY T_sogecarte.[identifiant salarié], [identifiant salarié] & [numero carte];

  5. #5
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Bonjours. Je crains que tu te retrouves encore avec des doublons. Si tu souhaite éviter les doublons des [identifiant salarié] alors certainement le nombre donnés est exact.
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  6. #6
    Membre régulier Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 414
    Points : 106
    Points
    106
    Par défaut
    La base source est polluée par des identifiants salariés en double et impossible de la faire rectifier par le service concerné.

    C'est pour celà que j'ai besoin de faire une clé avec l'identifiant et le n° de carte (numéro unique mais incomplet pour cause de confidentialité mais suffisant pour générer cette clé double).
    Je vais faire plusieurs contrôles pour voir si cette requête est fiable sous cette forme.

  7. #7
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    La base source est polluée par des identifiants salariés en double et impossible de la faire rectifier par le service concerné.
    Je comprends. Alors cette méthode que tu emplois est donc bonne.
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  8. #8
    Membre régulier Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 414
    Points : 106
    Points
    106
    Par défaut
    Je te remercie.

    Bon après midi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb constitution requete avec Select, Distinct et Count
    Par Anaxagore dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/12/2011, 23h32
  2. Réponses: 12
    Dernier message: 14/09/2011, 12h13
  3. Problème avec select distinct
    Par habiba dans le forum Requêtes
    Réponses: 6
    Dernier message: 02/03/2010, 13h37
  4. [AJAX] requete liée avec select distinct
    Par anthonydb1 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/12/2008, 15h12
  5. Probleme avec select distinct row from .
    Par jean christophe dans le forum Requêtes
    Réponses: 4
    Dernier message: 08/10/2008, 19h17

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