pb avec les doublons

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : pb avec les doublons

par djoole » 26 juil. 2005, 16:21

Il ne tient plus compte des audits qui évoluent.

Code : Tout sélectionner

select centre,zone,max(id_audit) as idaudit from audit group by centre,zone
En fait quand je fais cet requête je récupère les derniers états de chaque audit. Et il faudrait que je fasse peut être(si c possible) une autre requête sur la seconde table avec ces idaudit récupérés.

par Invité » 26 juil. 2005, 16:09

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é.

par zeus » 26 juil. 2005, 16:05

essaye ça :

Code : Tout sélectionner

SELECT id_audit FROM table GROUP BY centre HAVING id_audit=MAX(id_audit)

par djoole » 26 juil. 2005, 16:00

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.

par zeus » 26 juil. 2005, 15:49

Je suis désolé mais je ne comprend pas :shock:

Pourquoi 3 et 9 ? si l'état ne bouge pas, je dirais 2 et 9.

L'audit 3 à un 5 et 6 ?

par djoole » 26 juil. 2005, 15:42

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.

par zeus » 26 juil. 2005, 15:35

Dans ton exemple, j'ai 4 enregistrements dont id_anno = 4 :shock:

par djoole » 26 juil. 2005, 15:26

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é.

par zeus » 26 juil. 2005, 15:03

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 ...

par djoolio » 26 juil. 2005, 15:01

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?

par Invité » 26 juil. 2005, 14:49

Et si tu fait

Code : Tout sélectionner

SELECT DISTINCT(centre, zone), date FROM ...
G déjà essayé ça et ça ne marche pas.

par zeus » 26 juil. 2005, 14:27

Et si tu fait

Code : Tout sélectionner

SELECT DISTINCT(centre, zone), date FROM ...

par pjl » 26 juil. 2005, 14:02

et GROUP BY ?

par djoolio » 26 juil. 2005, 13:32

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.

par pjl » 26 juil. 2005, 11:24

regarde du coté de DISTINCT et de GROUP BY.