[resolu] pb de requête avec clause 'distinct'

pb de requête avec clause 'distinct' [resolu] - SQL/NoSQL - Programmation

Marsh Posté le 31-05-2005 à 16:53:17    

Salut à tous..
j'ai un problème de requêtage surement très con, mais impossible de trouver une solution...
je cherche à éliminer des doublons sur certains champs lors de ma requête, mais pas sur les autres ...
 
Voici ma requête :  

Code :
  1. SELECT distinct mv.MODVERSION_PREFIX as branche, mv.MODVERSION_ID as ID, mv.MODULE_ID as MODULE_ID from CVS_MODULE_VERSION mv, where mv.MODULE_ID = 20


 
et le résultat renvoyé :
 
| branche  | id | module_id |
_____________________________
| actu_1_0 | 20 | 20        |
| actu_1_1 | 98 | 20        |
| actu_1_1 | 99 | 20        |
-----------------------------
 
j'explique :  
mon but est d'obtenir les champs 'id' correspondant aux branche, mais je veux éliminer tous les doublons de branche au préalable. Or la clause distinct influe sur tous les champs de ma requête, ce qui fait qu'ici j'ai toutes les branches différentes ET tous les id différents satisfaisant mes clauses .
 
en gros il me faut ca :
| branche  | id | module_id |
_____________________________
| actu_1_0 | 20 | 20        |
| actu_1_1 | 98 | 20        |
| actu_1_1 | 99 | 20        |
-----------------------------
 
les différentes solutions que j'ai pu tenter ne me satisfont jamais .... help !!
(sachant que ma requête est pas optimisée, ca je sais, et que le champ 'module_id' ne sert à rien non plus, c pas grave ca fait joli)


Message édité par denzz le 01-06-2005 à 10:24:30
Reply

Marsh Posté le 31-05-2005 à 16:53:17   

Reply

Marsh Posté le 31-05-2005 à 17:02:52    

select Branche,min(id) from Tbl
group by Branche

Reply

Marsh Posté le 31-05-2005 à 17:09:39    

betsamee a écrit :

select Branche,min(id) from Tbl
group by Branche


 
 :jap:  :jap:  
merci de ta réponse, mais ... elle me paraît fausse, et après test, ...
elle l'est  :pfff:  :pfff:  
je sens que je v devoir revoir mon modèle de données  :cry:  

Reply

Marsh Posté le 01-06-2005 à 09:11:47    

g rien dit :)  
 
select distinct Branche,min(id) from Tbl
group by Branche <= ca ca fait ce que je veux

Reply

Marsh Posté le 01-06-2005 à 09:17:03    

En fait tu récupère les plus petite id pour chaque branche. C'est ca? (j'essaye de comprendre le min).


Message édité par Spir le 01-06-2005 à 09:17:13
Reply

Marsh Posté le 01-06-2005 à 10:22:34    

effectivement.
ce qui me permet d'avoir a chaque branche un et un seul id en face.  
sachant que ce n'est pas très très clean, mais au vu de l'utilisation que je fais de ma base ca me fait ce que je veux, donc no problémo.

Reply

Marsh Posté le 01-06-2005 à 14:24:26    

je vois pas trop pourquoi tu rajoutes un distinct

Reply

Marsh Posté le 01-06-2005 à 14:55:05    

cf haut de page et lien 'sujet à lire', je v pas refaire mon méaculpa ..

Reply

Marsh Posté le 01-06-2005 à 17:18:56    

Ouais moi non + je ne comprend. sachant qu'ID est surement une clé primaire donc pas de doublon donc a priori, logiquement sans DISTINCT ca devrait fonctionner.

Reply

Marsh Posté le 01-06-2005 à 17:22:31    

c'est surtout par rapport au group by

Reply

Marsh Posté le 01-06-2005 à 17:22:31   

Reply

Marsh Posté le 01-06-2005 à 17:23:38    

Nan là je ne voi pas non +. pourquoi un GROUP BY enlèverai les doublons?

Reply

Marsh Posté le 01-06-2005 à 19:50:26    

c'est clair que faire une group by sur un champ defini en leve les doublons sur ce champ!
si je dis : donne moi le id minimum par branche il ne va me donner qu'un resultat par branche
J'ai teste ma requete sur tes trois entrees et ca marche tres bien
le distinct n'a aucune utilite du fait du group by

Reply

Marsh Posté le 02-06-2005 à 10:34:56    

C'est le MIN + le GROUP BI qui font l'unicité. :bounce:

Reply

Marsh Posté le 02-06-2005 à 12:50:25    

de toutes les manieres un grup by est impossible sans une fonction d'aggregation

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed