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,
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,
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 pasEnvoyé par fabszn
Non, il n'y a pas de souci... c'est seulement qu'on en a besoin.Envoyé par fabszn
est équivalent à
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select distinct champ1, .. , champN from matabledonc peut être coûteux quand il n'est pas utile
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select champ1, .. , champN from matable group by champ1, .. , champN
franchement ça sert bien et tu es souvent obligé de l'utiliser
Hello,
Merci pour vos réponses!![]()
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é.Envoyé par remika
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.Envoyé par fabszn
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.
quand tu fais un SELECT DISTINCT ton_champ ça fait un GROUP BY sur tous les champs ???
oui.
si tu as
select distinct id_table_restau, prix from commande te donne
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
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 id_table_restau prix table_54 15 euros table_55 15 euros
notes le 30 euros.
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager