Bonjour à tous !!
J'ai une question à vous poser !
J'ai une table comme ceci :
Déjà, sommes nous d'accord sur le fait que l'ajout d'une contrainte unique + création d'un index est inutile ? Un seul suffirait ou y'a-t-il une astuce qui m'échappe??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 CREATE TABLE T_STATUS_CHANGE ( CXR_ID INTEGER NOT NULL, CXRSTAT_CHANGE_DATE TIMESTAMP NOT NULL, CXRSTAT_STATUS TINYINT NULL ) TYPE=INNODB; ALTER TABLE T_STATUS_CHANGE ADD UNIQUE STATUS_CHANGE_IDX (CXR_ID, CXRSTAT_CHANGE_DATE); CREATE INDEX IND_STATUS_CHANGE ON T_STATUS_CHANGE ( CXR_ID , CXRSTAT_CHANGE_DATE );
Bref, à part ce détail je tente d'écrire une requête :
Le select * n'est là que pour l'exemple (je sais que c'est mal ^^ et qu'il faut spécifier tous les champs).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 select s.* from T_STATUS_CHANGE s where s.cxrstat_change_date <= '2009-11-04 07:45:23.0' and ( s.cxr_id = 5664 or s.cxr_id = 5649 or s.cxr_id = 5668 or s.cxr_id = 5645 or s.cxr_id = 1033 or s.cxr_id = 1034 or s.cxr_id = 1049 ) order by s.cxrstat_change_date desc, s.cxr_id
Bref cette requête me retourne bien ce que je veux MAIS je ne voudrais qu'elle me retourne qu'une seule ligne PAR s.cxr_id différent !!
En gros pour le moment elle peut me retourne un truc du style :
Mais comme vous pouvez le voir, j'ai 2 lignes ou la valeur '1' pour la colonne CXR_ID apparait. J'aimerais n'avoir qu'une seule ligne par CXR_ID, auriez vous une piste à me donner, je sèche :'(CXR_ID - CXRSTAT_CHANGE_DATE - CXRSTAT_STATUS
1 Date1 0
1 Date2 1
2 Date3 0
3 Date4 1
(les identifiants ne correspondent pas... c'est juste pour l'exemple)
D'avance merci !!
Partager