Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/06/2003, 16h10   #1
Invité de passage
 
Inscription : juin 2003
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 3
Points : 0
Points : 0
Par défaut utilisation de curseur

bonjour
j'ai une table avec 2 colonnes VALUE et DATE
je voudrais faire un select de cette table qui supprimerait les lignes consécutives où il y a la même valeur dans VALUE
ex : dans ma table ya :
160 01/01/01
160 02/01/01
160 03/01/01
145 04/01/01


et je voudrais qu'il me renvoie
160 01/01/01
145 04/01/01

Comment faire ?
merci
diunisu06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2003, 16h22   #2
Membre expérimenté
 
Inscription : octobre 2002
Messages : 654
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 654
Points : 554
Points : 554
Bonjour,
Tu ne nous donnes pas beaucoup de détail sur comment on détermine quelle date prendre.
D'après ton jeu d'essai, cette requête pourrait fonctionner.
Code :
SELECT VALue, MIN(date) FROM MAtable GROUP BY VALUE
Petit conseil, je serais toi, je n'appellerai pas mon champ Date, c'est souvent un mot réservé dans les langages.
a+
Soazig
soazig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2003, 17h13   #3
Invité de passage
 
Inscription : juin 2003
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 3
Points : 0
Points : 0
Dans une suite d'enregistrements consécutifs, je veux qu'il me renvoie la première date et la première valeur et qu'il delete les autres enregistrements. Le pbl avec ta requete c'est qu'il me delete tous les enregistrements dont les VALUE sont égales ==> pas bon
si j'ai :
150 01/01/95
150 02/01/95
12 03/01/95
12 04/01/95
46 05/01/95
150 06/01/95
je veux
150 01/01/95
12 03/01/95
46 05/01/95
150 06/01/95

foila
merci
diunisu06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2003, 17h27   #4
Membre expérimenté
 
Inscription : octobre 2002
Messages : 654
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 654
Points : 554
Points : 554
Bonjour,
La requete que je t'ai fournie est une requete de sélection donc il ne delete rien du tout, il affiche, c'est tout.
Ce que tu veux, c'est récupérer une liste de valeur, ou supprimer des enregistrements?

Je n'ai toujours pas compris ce que tu veux.
Et surtout qu'est ce que tu appelles des enregistrements consécutifs, si tu ne nous donne pas ton critère de tri on aura du mal à t'aider.


Quel est ton SGBD?
A+
Soazig
soazig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2003, 19h30   #5
Invité de passage
 
Inscription : juin 2003
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 3
Points : 0
Points : 0
effectivement je me suis mal exprimé. En fait je ne veux pas faire de delete (pardon).
par ailleurs je suis sur sybase.
je veux traiter une longue liste de données (365 données pour 365 jours)
de 01/01/1996 au 01/01/1996 (1 ère colonne de dates )
des valeurs dans une deuxième colonne "VALUE"
je veux faire un select de cette table en renvoyant les dates et les valeurs. Le seul traitement a faire est que si il y a des lignes consécutives (qui se suivent) qui ont des valeurs de la colonne "VALUE" identiques, je veux que le select ne renvoie que la première ligne et pas la deuxième. Il faut donc faire un tri du style : je lie la première ligne, je lie la deuxième. si dans la colonne "VALUE" de la deuxième ligne j'ai la même valeur que pour la première ligne et bien je n'affiche pas la deuxième ligne . Et ainsi de suite (cf exemple deux messages avant)

La première réponse que tu m'a donnée est bonne que si je veux virer tous les lignes qui ont les mêmes valeurs dans la colonne "VALEUR", ce qui n'est pas le cas (que les lignes consécutives)

C'est pour cela que je voulais utiliser des curseurs
je sais pas si c'est tres clair
c'est pas évident de s'exprimer par écrit
merci
diunisu06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2003, 12h08   #6
Membre actif
 
Inscription : février 2003
Messages : 182
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 182
Points : 182
Points : 182
une solution un peu tirée par les cheveux mais fonctionne bien

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT  *
FROM tab1 a
WHERE date=(SELECT min(date)
                     FROM tab1 b
                    WHERE a.value=b.value)
OR       date=(SELECT min(date) 
                     FROM tab1 c
                     WHERE a.value=c.value
                     AND c.date > (SELECT Min(date) FROM tab1 e
                                          WHERE  e.value<>c.value
                                           AND  e.date>(SELECT max(dat) 
                                                                FROM tab1 f
                                                                WHERE e.value<>f.value
                                                                AND f.date<a.date 
                                                               ) 
                                        ) 
                     )
A+
MAMMAR est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h07.


 
 
 
 
Partenaires

Hébergement Web