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 SQL : DISTINCT


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Par défaut débutant SQL : DISTINCT
    Bonjour,
    J'ai fait des recherches sur le net mais impossible d'avoir des précisions sur DISTINCT
    Quelle est la différence entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select disctinct col1 col2 from matable
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select disctinct col1, col2 from matable
    Comment faire pour récupérer les valeurs de col1 et col2 en sélectionnant que les lignes dont la valeur de col1 est différente ?
    Merci

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    salut,

    tout depend de ce que tu veux récupérer.

    Si tu as cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    col 1 col 2
    1       1
    1       3
    tu dois donc récupérer une seule ligne mais laquelle?

    Si cela n'a pas dimportance, tu peux faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select  col1, col2 from matable group by col1

  3. #3
    Membre éprouvé Avatar de relivio
    Profil pro
    Inscrit en
    Février 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 157
    Par défaut
    Bonjour,

    Juste une petite parenthèse

    Citation Envoyé par Cybher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select  col1, col2 from matable group by col1
    Ceci ne fonctionnera pas car il faut une fonction de regroupement sur col2.

    Ensuite, je n'ai pas fait de recherches mais je pense que le DISTINCT doit être clairement expliqué sur beaucoup de sites? rien que sur celui-ci.


    Oliv'

  4. #4
    Membre émérite
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Par défaut
    Merci à tous pour votre aide, en fait
    select distinct col1,col2 from matable ne correspond pas à ce que je veux faire car il me faut afficher le contenu de col1 et col2 pour toutes les lignes dont col1 a une valeur qui change.
    J'espère que je suis clair.

  5. #5
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    si tu pouvais donner un exemple, ca serait super

    par exemple, si tu as cela dans ta table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    col 1  col 2
    1        1
    1        1
    1        2
    1        3
    2        4
    3        1
    4        4
    5        4
    ca doit te retourner quoi?

  6. #6
    Membre émérite
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Par défaut
    ça devrait me retourner ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    col 1  col 2
    1        1
    2        4
    3        1
    4        4
    5        4
    En fait toutes les lignes ou la valeur de col1 diffère ( sans doublon ).

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 364
    Par défaut
    Pour moi
    select disctinct col1 col2 from matable
    ne peux pas être valide puisqu'il est necessaire de séparer les deux champs par une virgule.

    Pour l'utilisation du disctinct celui-ci permet d'éviter d'avoir des doublons dans une même colonne.

    Par contre, je n'ai pas compris ceci
    Comment faire pour récupérer les valeurs de col1 et col2 en sélectionnant que les lignes dont la valeur de col1 est différente ?
    Tu veux afficher les col1 et col2 seulement si col1 est différent de col2, c'est ça ???
    Dans ce cas, une simple requête avec une codition where suffit.
    Du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select col1, col2
    From table
    Where col1 <> col2

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Ces deux requêtes n'ont rien à voir...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select disctinct col1 col2 
    from matable
    en fait peut être récrite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select disctinct col1 AS col2
    from matable
    et signifie que la colonne col1 sera renommée col2 à l'affichage.
    Il n'y aura donc qu'une seule colonne dans la table résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select disctinct col1, col2 from matable
    ramène deux colonne en éliminant les doublons.

    Un doublons est une ligne dont TOUTES LES VALEURS sont identique à une autre.

    L'opérateur DISTINCT porte sur la ligne et non pas sur telle ou telle colonne comme le pense trop souvent certains profanes.

    Lisez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/sqlaz/select/#L1.2

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. super débutant sql
    Par romdyane dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/12/2005, 11h38
  2. Réponses: 5
    Dernier message: 10/10/2005, 07h49
  3. Réponses: 1
    Dernier message: 06/10/2005, 10h09
  4. Débutant SQL, problème sur une jointure censée exclure ??
    Par derfatypik dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/06/2005, 15h55
  5. Débutant : SQL Server 2000
    Par bd0606 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/10/2003, 11h33

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