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 :

Requete sql table ayant plusieurs valeurs pour une clé, récupérer seulement la première


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 201
    Par défaut Requete sql table ayant plusieurs valeurs pour une clé, récupérer seulement la première
    Bonjour,

    J'ai une table avec une clé étrangère (integer) et un libellé...
    Je peux avoir plusieurs libellé pour une même clé étrangère...

    Exemple
    Id lib
    ----- -----
    1 Email
    1 telephone
    1 adresse
    2 geocodage
    2 zanzibar
    2 zizou
    3 gnawa
    3 fax


    Je cherche a faire une requète qui pour chaque clé étrangère, me renvoi seulement le premier résultat (et pas le second, ni les nième) de manière à obtenir une seule ligne par clé étrangère.

    Sur la table exemple, le résultat de ma requète serait:
    Id lib
    ---- -----
    1 Email
    2 geocodage
    3 gnawa


    Quelqu'un saurait-il comment faire cela ? je cherche déjà depuis trés longtemps et là, aujourd'hui, j'en ai vraiment besoin...

    Merci pour votre aide
    Olysmar2

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Le premier selon quel classement ?
    par ordre alphabétique ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 201
    Par défaut
    Pas particulièrement
    J'ai besoin simplement d'obtenir cette liste
    Une idée ?

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Vous parlez de "premier"...

    ça sous-entend un ordre, à moins que vous ne parliez du "premier qui tombe sous la main"

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 201
    Par défaut
    effectivement, le terme "premier" peut porter a confusion
    Alors on dit le "premier qui tombe sous la main", c'est à cela que je pense...
    Merci

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    hmm, alors vous pouvez prendre arbitrairement le premier par ordre alphabétique, ce qui donne une requête assez simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT id, MIN(lib)
    FROM LaTable
    GROUP BY Id

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2014
    Messages : 23
    Par défaut
    Salut,

    Tu peux envisager d'utiliser les fonctions Window pour donner une séquence a tes lignes, en fonction de ton ordre d'importance.
    Puis filtrer sur la séquence 1.

    En gros, si j'ai bien compris ton besoin, cela devrait ressembler à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    WITH CTE AS (
    	SELECT
    		ide, email,
    		ROW_NUMBER() OVER(PARTITION BY ide ORDER BY [default] DESC, [date] DESC) AS rownumber
    	FROM LaTable
    )
    SELECT
    	ide, email
    FROM CTE
    WHERE rownumber = 1

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 201
    Par défaut
    Cela m'a l'air pas mal, ça...
    Je ne connaissait pas.
    Je vais tester et je vous fait un retour
    Merci bcp

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 201
    Par défaut
    nickel !
    C'est pile ce que je cherchais

    une autre façon de l'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT
    	ide, email
    FROM (	SELECT
    		ide, email,
    		ROW_NUMBER() OVER(PARTITION BY ide ORDER BY DEFAUT DESC, [dcr] DESC) AS rownumber
    	FROM test2) as tt
    WHERE rownumber = 1
    Merci
    Sylo

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 19/02/2009, 14h39
  2. [MySQL] Plusieurs valeurs pour une variable à injecter
    Par pony99 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 03/12/2008, 12h04
  3. Plusieurs valeurs pour une meme colonne
    Par Aragorn) dans le forum SQL
    Réponses: 4
    Dernier message: 03/01/2008, 14h46
  4. Plusieurs valeurs pour une même colonne
    Par maxlegrand dans le forum Langage SQL
    Réponses: 7
    Dernier message: 16/10/2007, 13h32
  5. [Tableaux] Plusieurs valeurs pour une seule CheckBox
    Par Phenol dans le forum Langage
    Réponses: 2
    Dernier message: 01/03/2007, 17h54

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