Bonjour,
je cherche à transposer la requête ORACLE suivante pour SYBASE :
select toto, rownum
from bdd
qqun pourrait-il m'aider ?
Liliem
Bonjour,
je cherche à transposer la requête ORACLE suivante pour SYBASE :
select toto, rownum
from bdd
qqun pourrait-il m'aider ?
Liliem
ROWNUM n'existe pas dans Sybase (et n'a évidemment pas de vrai sens dans une base relationnelle - mais ça c'est une autre discussion :-)
La solution consiste à splitter la requête en deux:
Cependant il faut bien se rendre compte qu'il n'y a aucune relation physique entre le ROWNUM qui est généré et les données dans la table d'origine, et donc que la valeur du ROWNUM ne peut pas être utilisée dans une quelconque clause WHERE...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 select ROWNUM=identity(10), <autres colonnes> into #tmp from .... where ... select ROWNUM, ... from #tmp
Michael
Michael Peppler
Membre de TeamSybase - www.teamsybase.com
"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
Merci Michael pour ta réponse,Envoyé par mpeppler
le soucis c'est que je voudrai justement utiliser les "rownum" dans une clause where :
je m'explique,
je cherche à pointer sur la nième ligne en-dessous d'un résultat, sans utiliser de procédure stockée.
1 | Lundi 02/01
2 | Mardi 03/01
3 | Mercredi 04/01
4 | Jeudi 05/01
5 | Vendredi 06/01
6 | Lundi 09/01
7 | ...
par ex : si j'ai Lundi 02/01 --> + 5 = Lundi 09/01
avec oracle et rownum, cela aurait été possible, mais là... je suis feintée !
merci encore pour ta réponse et je continue mes recherches sur la toile..
Mais si qqun a une solution, cela m'aiderait beaucoup !!!
Il y a évidemment une solution intermédiaire:
D'abord, préparer une table temporaire qui contient la PK de la vraie table et un pseudo-rownum:
Maintenant, on utilise la table #tmp pour gérer les reqètes suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select rownum=identity(10), pk_de_la_table_source into #tmp from table_source where conditions... order by ...
et pour trouver la ligne rownum+x:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select t.rownum, autres_colonnes from #tmp, table_source s where t.pk_de_la_table_source = s.pk_de_la_table_source and autres conditions... order by t.rownum
Tant que la session reste ouverte la table #tmp reste disponible. Evidemment il reste passablement de problèmes potentiels, mais peut-être que cela peut te mettre dans la bonne direction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select t.rownum, autres_colonnes from #tmp, table_source s where t.pk_de_la_table_source = s.pk_de_la_table_source and t.rownum = $valeur
Michael
Michael Peppler
Membre de TeamSybase - www.teamsybase.com
"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
Merci beaucoup pour ton aide Michael,
Liliem
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager