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 06/04/2006, 11h57   #1
Invité de passage
 
Inscription : avril 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 3
Points : 0
Points : 0
Par défaut [ASE] ROWNUM dans Sybase ?

Bonjour,

je cherche à transposer la requête ORACLE suivante pour SYBASE :
select toto, rownum
from bdd


qqun pourrait-il m'aider ?

Liliem
liliem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2006, 13h15   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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:

Code :
1
2
3
4
5
6
7
8
 
SELECT ROWNUM=identity(10), <autres colonnes> 
INTO #tmp
FROM ....
WHERE ...
 
SELECT ROWNUM, ...
FROM #tmp
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...

Michael
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2006, 13h48   #3
Invité de passage
 
Inscription : avril 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 3
Points : 0
Points : 0
Citation:
Envoyé par mpeppler
(...)
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...

Michael
Merci Michael pour ta réponse,
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 !!!
liliem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2006, 08h40   #4
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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:
Code :
1
2
3
4
5
 
SELECT rownum=identity(10), pk_de_la_table_source INTO #tmp
FROM table_source
WHERE conditions...
ORDER BY ...
Maintenant, on utilise la table #tmp pour gérer les reqètes suivantes:

Code :
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
et pour trouver la ligne rownum+x:

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

Michael
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 16h40   #5
Invité de passage
 
Inscription : avril 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 3
Points : 0
Points : 0
Par défaut [ASE] ROWNUM dans Sybase ?

Merci beaucoup pour ton aide Michael,

Liliem
liliem est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h08.


 
 
 
 
Partenaires

Hébergement Web