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 :

[Débutant] DISTINCT sur une seule des colonnes ?


Sujet :

Langage SQL

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut [Débutant] DISTINCT sur une seule des colonnes ?
    Salut à tous,

    je suis débutant dans l'utilisation du langage SQL et je l'utilise via C++ Builder 6 de Borland.

    Je dispose d'une table contenant différentes colonnes et particulièrement la colonne Catégorie.

    Le site de sqlPro j'ai découvert l'opérateur DISTINCT que l'on utilise avec SELECT.

    Je souhaiterais sélectionner toutes les colonnes de ma table mais appliquer l'opérateur DISTINCT uniquement sur la colonne Catégorie, mais je ne sais pas du tout comment faire !

    Merci d'avance pour votre aide !
    Neilos

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    ID CATEGORIE COULEUR
    ------------------------------------
    1 stylo bleu
    2 stylo rouge
    3 stylo vert
    sans autre info, si je te dis de faire un distinct sur categorie, quelle ligne tu prends ?


    T'en sais rien ? Et bien un SGBD n'est pas plus malin

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Ok donc ce que je veux faire n'est pas possible.

    Et si j'utilise l'opérateur DISTINCT avec toutes les colonnes je suppose que je ne serais pas assuré d'avoir toutes les valeurs que prend la colonne Catégorie ?
    Neilos

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Mettez donc un exemple de ce que vous avez et ce que vous voulez, on verra alors ce que l'on peut faire

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Eh bien je dispose d'une table comme par exemple

    Index Cagégorie Nom Prénom
    -----------------------------------------------
    0 Privée Machin Bidule
    1 Bureau Directeur Truc
    2 Privée Pikachu Pokémon
    3 Enfants Dupont Dupont
    4 Enfants Intel Amd
    5 Privée Centrion XP Mobile

    Je voudrais pouvoir récupérer la liste des valeurs prises par le champ Catégorie tout en aillant accès aux autres champs...mais le problème du choix de quelle ligne prendre risque de tout bloquer...

    En résultat je voudrais par exemple :

    Index Cagégorie Nom Prénom
    -----------------------------------------------
    0 Privée Machin Bidule
    1 Bureau Directeur Truc
    3 Enfants Dupont Dupont

    mais avoir


    Index Cagégorie Nom Prénom
    -----------------------------------------------
    2 Privée Pikachu Pokémon
    4 Enfants Intel Amd
    1 Bureau Directeur Truc

    ne serait pas pour moi un problème !
    Neilos

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    c'est donc le dernier enregistrement de chaque catégorie ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 63
    Points : 54
    Points
    54
    Par défaut
    As tu besoin des valeurs contenues dans les colonnes 'nom' et 'prénom' ?

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Salut,

    non ce n'est pas forcément le dernier enregistrement.

    Et non je n'ai pas besoin des valeurs dans Nom et Prénom mais j'ai besoin de la présence des champs (c'est beaucoup plus pratique...par rapport à l'interface).

    Merci de votre aide !
    Neilos

  9. #9
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    La première réponse d'orafrance résume tout.

    Les solutions qui s'offrent à toi nécessite de déterminer quelle ligne tu veux récupérer dans les groupes formées par les catégories.

    Une solution avec le plus grand index par catégorie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Categorie, Nom, Prénom
    FROM laTable t1
    WHERE Index  = (SELECT MAX(INDEX) FROM laTable t2 WHERE t1.Categorie=t2.Categorie)
    Et si le pipeau ne te fait pas peur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Categorie, MAX(Nom || ' ' || Prenom)
    FROM laTable
    GROUP BY Categorie
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Merci beaucoup pour votre aide
    Tout fonctionne maintenant !
    Neilos

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

Discussions similaires

  1. DISTINCT sur une partie des colonnes
    Par moshehayun dans le forum Développement
    Réponses: 2
    Dernier message: 04/01/2012, 12h13
  2. DISTINCT sur une seule colonne
    Par Invité dans le forum Langage SQL
    Réponses: 9
    Dernier message: 06/06/2011, 10h45
  3. Problème sur une seule des tables de la database
    Par Annsen dans le forum Administration
    Réponses: 4
    Dernier message: 01/06/2011, 15h47
  4. Réponses: 4
    Dernier message: 13/04/2007, 17h32
  5. Recherche multi-mots sur une seule colonne
    Par Badiste dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2004, 11h24

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