SQL : Quand ne faut il pas mettre de DISTINCT
tozinho92
-
phil_232 Messages postés 286 Statut Membre -
phil_232 Messages postés 286 Statut Membre -
Hello World !
Je voulais savoir( c'est relativement urgent :-) ), en SQL, dans tout s'qui est manipulation, (where, agrégats, corélation ect... ) j'ai toujours eu du mal a repéré quand, avec les attributs de mon select il y aura des doublons dans les lignes que je séléctionne. Je me plante souvent dans les DISTINCT, ou bien alors COUNT ( DISTINCT ) ect ... je me demande si il n'y aurait pas une éspece de théoreme qui dirait quele chose du genre :
les seuls cas ou l'on met un distinct sont quand il n'y a pas de clé primaire dans le select ou dans le WHERE le HAVING
voila un exemple, il est surement faux, ou bien alors incomplet, mais ce que je veux cest savoir s'il existe des cas bien précis, des structures, qui faut retenir, puis ensuite reapliquer betement quand on voit un grand schéma plein de tables. J'imagine que pour ceux qui sont balèze en SQL ça doit etre devenu mécanique et il ne se posent meme plus la question tellement c'est evident, et je demande donc à ces gens la de me dire comment il font si c'est possible !
En vous remerciant !
Je voulais savoir( c'est relativement urgent :-) ), en SQL, dans tout s'qui est manipulation, (where, agrégats, corélation ect... ) j'ai toujours eu du mal a repéré quand, avec les attributs de mon select il y aura des doublons dans les lignes que je séléctionne. Je me plante souvent dans les DISTINCT, ou bien alors COUNT ( DISTINCT ) ect ... je me demande si il n'y aurait pas une éspece de théoreme qui dirait quele chose du genre :
les seuls cas ou l'on met un distinct sont quand il n'y a pas de clé primaire dans le select ou dans le WHERE le HAVING
voila un exemple, il est surement faux, ou bien alors incomplet, mais ce que je veux cest savoir s'il existe des cas bien précis, des structures, qui faut retenir, puis ensuite reapliquer betement quand on voit un grand schéma plein de tables. J'imagine que pour ceux qui sont balèze en SQL ça doit etre devenu mécanique et il ne se posent meme plus la question tellement c'est evident, et je demande donc à ces gens la de me dire comment il font si c'est possible !
En vous remerciant !
A voir également:
- SQL : Quand ne faut il pas mettre de DISTINCT
- Logiciel sql - Télécharger - Bases de données
- Requete sql pix ✓ - Forum MySQL
- Sql lister les tables ✓ - Forum Programmation
- Récupération serveur sql - Télécharger - Gestion de données
- Migration base access vers sql server - Télécharger - Gestion de données
4 réponses
un DISTINCT s'utilise pour éliminer des doublons dans une requête. souvent cela peut-être évité par un design propre de sa bdd et les requêtes. en fait le DISTINCT a une grande influence sur la performance du serveur bdd. l'histoire derrière est que pour éliminer les doublons le moteur de la bdd doit d'abord faire un tri sur la totalité des enregistrement trouvé (bon ca va pour qq 100 ligne mais après ça peut se faire remarquer). ensuite le serveur doit parcourir le résultat et puis éliminer les doublons. il est donc complètement faux de dire qu'on peut l'utiliser à volonté. en fait on essaye à tout prix de l'éviter.
Tu peux utiliser le DISTinct dans tout type de requetes, elle permet simplement de sélectionner une seule fois le champ entre parenthèse. Aucun pb avec les clauses having et group by
c'est pas s'queu je te demande lol, j'avais bien compris son utilité :).
Le probleme c'est que une fois que les requete deviennent compliké et que dans mon select j'ai 3 attribut et dans mon where j'ai des conditions sur 4 autres, ben la je memelle un peu lespinceaux, parceke dans ma tete j'essaye de séléctionné les 3 premier attribut, et petit a petit de retirer les lignes qui respectent pas mé 4 condtion dans le where et essayé tant bien que mal de trouvé si il reste des doublons, mais comme tu peux ten douté ca devient assez coton, et quand c aussi compliké, je ny arrive que tres rarement.
Mon probleme c ke je pense ke c pas la bonne façon de procédé, et je voudrais savoir si ya une maniere plus simple que la mienne de trouvé si y reste des doublons.
Voila, si tu pouvais repondre à ce probleme ca ce sré pas mal ;) !
Le probleme c'est que une fois que les requete deviennent compliké et que dans mon select j'ai 3 attribut et dans mon where j'ai des conditions sur 4 autres, ben la je memelle un peu lespinceaux, parceke dans ma tete j'essaye de séléctionné les 3 premier attribut, et petit a petit de retirer les lignes qui respectent pas mé 4 condtion dans le where et essayé tant bien que mal de trouvé si il reste des doublons, mais comme tu peux ten douté ca devient assez coton, et quand c aussi compliké, je ny arrive que tres rarement.
Mon probleme c ke je pense ke c pas la bonne façon de procédé, et je voudrais savoir si ya une maniere plus simple que la mienne de trouvé si y reste des doublons.
Voila, si tu pouvais repondre à ce probleme ca ce sré pas mal ;) !