Page 1 sur 2
pb avec les doublons
Posté : 26 juil. 2005, 11:21
par djoole
Bonjour à tous
Voila mon problème : je cherche à éliminer des doublons sur certains champs lors de ma requête, mais pas sur les autres ...
Je m'explique : en fait dans ma base j'ai ça
id centre zone nb_anomalies date
1 8v d8 0 2005-07-25
2 8v d8 4 2005-07-26
3 8v d8 6 2005-07-26
4 f 1k 0 2005-07-26
5 f vv 2 2005-07-26
6 f vv 4 2005-07-26
et je voudrais ça :
id centre zone nb_anomalies date
3 8v d8 6 2005-07-26
4 f 1k 0 2005-07-26
6 f vv 4 2005-07-26
Merci pour votre aide[/b]
Posté : 26 juil. 2005, 11:24
par pjl
regarde du coté de DISTINCT et de GROUP BY.
Posté : 26 juil. 2005, 13:32
par djoolio
mais avec le distinct on ne peut pas choisir sur quel champ il va agir et pas sur d' autres.
En fait : select distinct centre,zone,date.......
Ca va faire un distinct suivant ces trois champs alors que moi je veux qu'il le fasse que sur les deux premiers.
Posté : 26 juil. 2005, 14:02
par pjl
et GROUP BY ?
Posté : 26 juil. 2005, 14:27
par zeus
Posté : 26 juil. 2005, 14:49
par Invité
G déjà essayé ça et ça ne marche pas.
Posté : 26 juil. 2005, 15:01
par djoolio
En fait j'arrive à les récupérer grâce à un group by et un max en faisant :
Code : Tout sélectionner
SELECT centre,zone, MAX(id) AS id
FROM MaTable
GROUP BY centre,zone
Mais lorsque que je fais des jointures avec d'autres tables et que j'ai besoin d'un autre group by alors ça me fausse tout.
Si quelqu'un a une autre solution?
Posté : 26 juil. 2005, 15:03
par zeus
mais avec le distinct on ne peut pas choisir sur quel champ il va agir et pas sur d' autres.
En fait : select distinct centre,zone,date.......
Ca va faire un distinct suivant ces trois champs alors que moi je veux qu'il le fasse que sur les deux premiers.
Donne nous une description un peu plus précise de ce que tu veux faire et on aura peut etre une idée ...
Posté : 26 juil. 2005, 15:26
par djoole
En fait j'ai une table Audit avec
id_audit centre zone nb_ano date_audit
1 8v d8 0 2005-07-25
2 8v d8 4 2005-07-26
3 8v d8 6 2005-07-26
7 f1 1k 0 2005-07-26
8 f vv 2 2005-07-26
9 f vv 4 2005-07-26
et par exemple pour les 3 premiers audit c'est le même mais il a évolué au cours du temps et j'ai besoin de garder l'historique.
Mais j'ai une autre table qui pour chaque audit je vois quel anomalie il a
id_audit id_ano
2 1
2 2
2 3
2 4
3 1
3 2
3 3
3 4
3 5
3 6
8 2
8 4
9 2
9 4
9 7
9 8
Au final ce que je voudrais c'est compter pour chaque id_ano combien il y en a
par exemple :
pour l'id_ano "4" j'en rencontrerais seulement que 2 fois
Je sais pas si c vraiment clair mais voila le problème dans sa totalité.
Posté : 26 juil. 2005, 15:35
par zeus
Dans ton exemple, j'ai 4 enregistrements dont id_anno = 4

Posté : 26 juil. 2005, 15:42
par djoole
Désolé j'ai mal expliqué.
Mais en fait vu que chaque audit évolue au cours du temps au final ce qui m'intéresse dans la seconde table c'est son dernier état donc dans notre exemple l'audit 3 et l'audit 9.
Et la on s'aperçoit que l'id_ano "4" apparait deux fois.
Je sais si c un peu plus clair ou pas.
Posté : 26 juil. 2005, 15:49
par zeus
Je suis désolé mais je ne comprend pas
Pourquoi 3 et 9 ? si l'état ne bouge pas, je dirais 2 et 9.
L'audit 3 à un 5 et 6 ?
Posté : 26 juil. 2005, 16:00
par djoole
id_audit centre zone nb_ano date_audit
1 8v d8 0 2005-07-25
2 8v d8 4 2005-07-26
3 8v d8 6 2005-07-26
8 f vv 2 2005-07-26
9 f vv 4 2005-07-26
id_audit id_ano
2 1
2 2
2 3
2 4
3 1
3 2
3 3
3 4
3 5
3 6
8 2
8 4
9 2
9 4
9 7
9 8
En fait l'id_audit change(au départ "8v d8" avait 0 anomalie puis il en a eu 4 et c'est devenu l'id_audit 2 puis il a eu 6 anomalie et c'est devenu l'id_audit 3) mais celui qui m'interesse c'est l'id_audit 3.
Donc dans ma seconde table quand je vais faire des calculs ça sera que sur l'id_audit 3 et l'id_audit 9.
Posté : 26 juil. 2005, 16:05
par zeus
essaye ça :
Code : Tout sélectionner
SELECT id_audit FROM table GROUP BY centre HAVING id_audit=MAX(id_audit)
Posté : 26 juil. 2005, 16:09
par Invité
Si tu veux c'est d'avoir en mémoire l'évolution d'un audit qui m'emmerde car je ferais un update et je changerais le nb_ano quand celui_ci changerait.
En laissant l'historique si je compte les différentes anomalies il me les répète à chaque fois que l'audit a évolué.