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 :

[SQL]emploie de DISTINCT


Sujet :

Langage SQL

  1. #1
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut [SQL]emploie de DISTINCT
    Hello,

    Est ce que l'emploie du distinct est recommandé?

    Ou alors si on en vient à utiliser distinct c'est qu'il y a un soucis dans la requete?

    Merci d'avance,
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut Re: [SQL]emploie de DISTINCT
    Citation Envoyé par fabszn
    Est ce que l'emploi du distinct est recommandé?
    Seulement quand c'est nécessaire... donc lorsqu'on peut avoir des lignes en double dans le résultat alors qu'on ne le désire pas
    Citation Envoyé par fabszn
    Ou alors si on en vient à utiliser distinct c'est qu'il y a un souci dans la requête?
    Non, il n'y a pas de souci... c'est seulement qu'on en a besoin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select distinct champ1, .. , champN
    from matable
    est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select champ1, .. , champN
    from matable
    group by champ1, .. , champN
    donc peut être coûteux quand il n'est pas utile
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    franchement ça sert bien et tu es souvent obligé de l'utiliser
    Ignorer c'est aussi croire que l'on sait.
    Merci d'essayer d'écrire correctement.
    Pas de questions techniques par MP SVP.

  4. #4
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    Merci pour vos réponses!
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


  5. #5
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut Re: [SQL]emploie de DISTINCT
    Citation Envoyé par remika
    franchement ça sert bien et tu es souvent obligé de l'utiliser
    tsst tsst. Pour débugger une requête ou une faire recherche rapide dans SQL*Plus ou Query Analyzer, DISTINCT est très pratique. Mais pour des développements DISTINCT est absolument déconseillé.

    Citation Envoyé par fabszn
    Ou alors si on en vient à utiliser distinct c'est qu'il y a un souci dans la requête?
    En effet on voit souvent des requêtes mal écrites avec des doublons à la pelle à cause de jointures oubliées, d'un problème de logique, de niveaux d'agrégation mal étudiés entre plusieurs tables qui ont souvent été résolues à l'arrache avec un DISTINCT.

    En théorie c'est quand on en a besoin et c'est plus rapie à écrire qu'un group by, en pratique le DISTINCT est souvent malheureusement mal utilisé . D'ailleurs un DISTINCT fait un group by de tout les champs tandis que le group by permet de ne prendre que les dimensions et d'agréger les indicateurs (SUM,MAX,..), ce que ne sait pas faire le distinct.

  6. #6
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    quand tu fais un SELECT DISTINCT ton_champ ça fait un GROUP BY sur tous les champs ???
    Ignorer c'est aussi croire que l'on sait.
    Merci d'essayer d'écrire correctement.
    Pas de questions techniques par MP SVP.

  7. #7
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    oui.

    si tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    id_cmd  id_table_restau prix
    1          table_54      15 euros
    2          table_54      15 euros
    3          table_55      15 euros
    select distinct id_table_restau, prix from commande te donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    id_table_restau prix
    table_54      15 euros
    table_55      15 euros
    tandis qu'un group by qui ne sera que sur id_table_restau te donnera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select id_table_restau,sum( prix )
    from commande 
    group by id_table_restau
     
    id_table_restau prix
    table_54      30 euros
    table_55      15 euros
    notes le 30 euros.

  8. #8
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    c'est bon à savoir thx
    Ignorer c'est aussi croire que l'on sait.
    Merci d'essayer d'écrire correctement.
    Pas de questions techniques par MP SVP.

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

Discussions similaires

  1. [SQL] Utilisation de distinct
    Par toddy_101 dans le forum PHP & Base de données
    Réponses: 29
    Dernier message: 03/01/2007, 16h52
  2. [SQL] Optimisation union , distinct
    Par raj dans le forum Oracle
    Réponses: 5
    Dernier message: 18/05/2006, 10h17
  3. [SQL] Faire un Distinct en incluant un champ de type Memo
    Par Pedro dans le forum Bases de données
    Réponses: 30
    Dernier message: 23/03/2006, 19h08
  4. [Sql]Having Count ( Distinct )
    Par nuke_y dans le forum Oracle
    Réponses: 5
    Dernier message: 20/02/2006, 21h36

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