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

Développement SQL Server Discussion :

[T-SQL] - Gestion des doublons


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Par défaut [T-SQL] - Gestion des doublons
    Bonjour,

    Je rencontre un problème pour éliminer des doublons dans le résultat d'une requête.

    La situation :
    2 Tables :
    une table Produit :
    - identifiant produit (une clé primaire) FK
    - la designation
    - le code laboratoire
    - le prix de vente
    - etc....

    une table Code Produit :
    - un identifiant (clé primaire compteur auto)
    - un code produit
    - etc...
    - une clé étrangère (clé primaire table produit)


    ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT CPR_Code, IXF_PRD_Designation, PRD_PrixVente, IXF_PRD_IsNfp, CPR_Type
    FROM T_Produits P
    LEFT JOIN T_Produits_Codes C
    ON P.PK_PRD_Code = C.FK_CPR_PRD_Code
    WHERE not C.CPR_Code IS null AND ISNUMERIC(C.CPR_Code) = 1
    ORDER BY CAST(CPR_Code as FLOAT)

    Exemple :
    Produit P1 :
    Labo 30
    Prix 1.20
    Codes du produit P1 : 20, 15


    Produit P2 :
    Labo 120
    Prix 1.30
    Codes du produit P2: 30, 15


    Produit P3 :
    Labo 50
    Prix 1.80
    Codes du produit P3 : 35

    Ce que j’obtiens avec ma requete :
    20, produit P1, 1.20
    15, produit P1, 1.20
    30, produit P2, 1.30
    15, produit P2, 1.30
    35, Produit P3, 1.80

    Ce que je veux obtenir : (sur le doublon 15 je ne retiens que le code labo le plus petit)
    20, produit P1, 1.20
    15, produit P1, 1.20
    30, produit P2, 1.30
    35, Produit P3, 1.80


    Je souahite obtenir l'unicité du code dans le résulat, avec dans le cas de doublons, ne sélectionner que l'occrrence avce le code labo le plus petit.

    Remerciements et bonne journée

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Quel est l'intérêt de la jointure externe ?

    Sinon, quelque chose de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    With SR as
    (
        SELECT CPR_Code, IXF_PRD_Designation, PRD_PrixVente, IXF_PRD_IsNfp, CPR_Type
            -- pensez à utilisez vos alias de table aussi dans le SELECT
             , row_number() over(partition by CPR_Code order by P.Labo asc) as RN
          FROM T_Produits         AS P
    INNER JOIN T_Produits_Codes AS C
            ON C.FK_CPR_PRD_Code = P.PK_PRD_Code
         WHERE C.CPR_Code IS NOT NULL
           AND ISNUMERIC(C.CPR_Code) = 1
    )
      SELECT CPR_Code, IXF_PRD_Designation, PRD_PrixVente, IXF_PRD_IsNfp, CPR_Type
        FROM SR
       WHERE rn = 1
    ORDER BY CAST(CPR_Code AS FLOAT) ASC;

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Par défaut
    Bonjour,

    Je te remercie pour ton aide précieuse.

    J'ai testé la requête et celle-ci fourni un résultat tout à fait conforme à mes attentes.

    Encore merci.

    Cordialement,

    Pascal LE GOFF

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

Discussions similaires

  1. Requete SQL sous Access : gestion des doublons
    Par mcroz dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 27/02/2007, 16h37
  2. PL/SQL: Gestion des dates
    Par claralavraie dans le forum PL/SQL
    Réponses: 3
    Dernier message: 08/09/2006, 10h21
  3. Programmation PL/SQL gestion des erreurs
    Par delphine_lep dans le forum PL/SQL
    Réponses: 1
    Dernier message: 31/07/2006, 18h37
  4. [Débutant][PL/SQL] Gestion des erreurs
    Par weebib dans le forum Oracle
    Réponses: 4
    Dernier message: 13/06/2006, 16h22
  5. [SQL SERVER]des doublons rebelles
    Par trotters213 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 25/03/2005, 15h12

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