Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[ODBC] Equivalent du ROWNUM d'Oracle ?

9 réponses
Avatar
Gilles TOURREAU
Bonjour tout le monde !

Pour le spécialistes ODBC, existe t'il un équivalent du ROWNUM d'Oracle
que l'on peut placer dans une requête SQL ?

En vous remerciant par avance de vos lumières...

Cordialement

--
Gilles TOURREAU
Responsable Informatique
gilles.tourreau@pos.fr

Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr

9 réponses

Avatar
elecoest
Gilles TOURREAU a écrit :

Bonjour tout le monde !

Pour le spécialistes ODBC, existe t'il un équivalent du ROWNUM d'Orac le
que l'on peut placer dans une requête SQL ?



non. C'est quoi ton besoin exact ?

A la rigueur tu as des possibilités de fonction seek(position) dans
ton recordset celà peut être une piste.

En vous remerciant par avance de vos lumières...

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr


Avatar
Gilles TOURREAU
a utilisé son clavier pour écrire :
Gilles TOURREAU a écrit :

Bonjour tout le monde !

Pour le spécialistes ODBC, existe t'il un équivalent du ROWNUM d'Oracle
que l'on peut placer dans une requête SQL ?



non. C'est quoi ton besoin exact ?

A la rigueur tu as des possibilités de fonction seek(position) dans
ton recordset celà peut être une piste.

En vous remerciant par avance de vos lumières...

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr





En fait je dois accéder à différente bases dBase et Access, voir
d'autres...

Le problème c'est que je veux récuperer des enregistrements bornés (du
i-ème enregistrement au j-ème enregistrement)...

Je sais le faire sous Oracle et sur SQL Serveur... Mais en ODBC ???
Comment faire ?

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
elecoest
Gilles TOURREAU a écrit :

a utilisé son clavier pour écrire :
> Gilles TOURREAU a écrit :
>
>> Bonjour tout le monde !
>>
>> Pour le spécialistes ODBC, existe t'il un équivalent du ROWNUM d'O racle
>> que l'on peut placer dans une requête SQL ?
>
> non. C'est quoi ton besoin exact ?
>
> A la rigueur tu as des possibilités de fonction seek(position) dans
> ton recordset celà peut être une piste.
>
>> En vous remerciant par avance de vos lumières...
>>
>> Cordialement
>>
>> --
>> Gilles TOURREAU
>> Responsable Informatique
>>
>>
>> Société P.O.S
>> Spécialiste en motoculture depuis + de 30 ans !
>> http://www.pos.fr

En fait je dois accéder à différente bases dBase et Access, voir
d'autres...

Le problème c'est que je veux récuperer des enregistrements bornés (du
i-ème enregistrement au j-ème enregistrement)...

Je sais le faire sous Oracle et sur SQL Serveur... Mais en ODBC ???
Comment faire ?



utiliser ADO4WD :)
Avatar
Firetox
Bonjour

manu a raison
les acces alter natif ont tous des mySQLExec compatible avec LIMIT
sur les base oracle SQLServer Acces,SQLite , FireBird etc ... (en fait tous
ceux compatible 100% SQLManagerX)

ca permet de faire des requete comme "SELECT * FROM CLient LIMIT 3,20
et ca sur n'importe quelle base

un petit plus de SQLManagerX

Bon dev
@+

"Gilles TOURREAU" a écrit dans le message de news:

a utilisé son clavier pour écrire :
Gilles TOURREAU a écrit :

Bonjour tout le monde !

Pour le spécialistes ODBC, existe t'il un équivalent du ROWNUM d'Oracle
que l'on peut placer dans une requête SQL ?



non. C'est quoi ton besoin exact ?

A la rigueur tu as des possibilités de fonction seek(position) dans
ton recordset celà peut être une piste.

En vous remerciant par avance de vos lumières...

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr





En fait je dois accéder à différente bases dBase et Access, voir
d'autres...

Le problème c'est que je veux récuperer des enregistrements bornés (du
i-ème enregistrement au j-ème enregistrement)...

Je sais le faire sous Oracle et sur SQL Serveur... Mais en ODBC ???
Comment faire ?

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr




Avatar
Gilles TOURREAU
Dans son message précédent, a écrit :
Gilles TOURREAU a écrit :

a utilisé son clavier pour écrire :
Gilles TOURREAU a écrit :

Bonjour tout le monde !

Pour le spécialistes ODBC, existe t'il un équivalent du ROWNUM d'Oracle
que l'on peut placer dans une requête SQL ?



non. C'est quoi ton besoin exact ?

A la rigueur tu as des possibilités de fonction seek(position) dans
ton recordset celà peut être une piste.

En vous remerciant par avance de vos lumières...

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr





En fait je dois accéder à différente bases dBase et Access, voir
d'autres...

Le problème c'est que je veux récuperer des enregistrements bornés (du
i-ème enregistrement au j-ème enregistrement)...

Je sais le faire sous Oracle et sur SQL Serveur... Mais en ODBC ???
Comment faire ?



utiliser ADO4WD :)



En fait je dois absolument utiliser ODBC (je n'ai pas le temps de
redévelopper cette application avec ADO4WD car elle doit bientot être
migré en .NET...)

Je vais utiliser le principe de la soustraction relationnel mais le
problème c'est que les performances se dégradent au fur et à mesure que
l'on s'éloigne du début...

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Emmanuel Lecoester
"Gilles TOURREAU" a écrit dans le message de news:

Dans son message précédent, a écrit :
Gilles TOURREAU a écrit :

a utilisé son clavier pour écrire :
Gilles TOURREAU a écrit :

Bonjour tout le monde !

Pour le spécialistes ODBC, existe t'il un équivalent du ROWNUM
d'Oracle
que l'on peut placer dans une requête SQL ?



non. C'est quoi ton besoin exact ?

A la rigueur tu as des possibilités de fonction seek(position) dans
ton recordset celà peut être une piste.

En vous remerciant par avance de vos lumières...

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr





En fait je dois accéder à différente bases dBase et Access, voir
d'autres...

Le problème c'est que je veux récuperer des enregistrements bornés (du
i-ème enregistrement au j-ème enregistrement)...

Je sais le faire sous Oracle et sur SQL Serveur... Mais en ODBC ???
Comment faire ?



utiliser ADO4WD :)



En fait je dois absolument utiliser ODBC (je n'ai pas le temps de
redévelopper cette application avec ADO4WD car elle doit bientot être
migré en .NET...)



odbc windev alors. Si oui c'est de l'odbc pur et donc pas de gestion des
position.

Je vais utiliser le principe de la soustraction relationnel mais le
problème c'est que les performances se dégradent au fur et à mesure que
l'on s'éloigne du début...



interessant comme principe tu as des liens ?
Avatar
Gilles TOURREAU
Emmanuel Lecoester avait soumis l'idée :
"Gilles TOURREAU" a écrit dans le message de news:

Dans son message précédent, a écrit :
Gilles TOURREAU a écrit :

a utilisé son clavier pour écrire :
Gilles TOURREAU a écrit :

Bonjour tout le monde !

Pour le spécialistes ODBC, existe t'il un équivalent du ROWNUM d'Oracle
que l'on peut placer dans une requête SQL ?



non. C'est quoi ton besoin exact ?

A la rigueur tu as des possibilités de fonction seek(position) dans
ton recordset celà peut être une piste.

En vous remerciant par avance de vos lumières...

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr





En fait je dois accéder à différente bases dBase et Access, voir
d'autres...

Le problème c'est que je veux récuperer des enregistrements bornés (du
i-ème enregistrement au j-ème enregistrement)...

Je sais le faire sous Oracle et sur SQL Serveur... Mais en ODBC ???
Comment faire ?



utiliser ADO4WD :)



En fait je dois absolument utiliser ODBC (je n'ai pas le temps de
redévelopper cette application avec ADO4WD car elle doit bientot être migré
en .NET...)



odbc windev alors. Si oui c'est de l'odbc pur et donc pas de gestion des
position.

Je vais utiliser le principe de la soustraction relationnel mais le
problème c'est que les performances se dégradent au fur et à mesure que
l'on s'éloigne du début...



interessant comme principe tu as des liens ?



Ya pas de lien... J'ai rien trouvé sur internet à part avec le ROWNUM
d'Oracle...

Ca vient de ma petite tête :

Pour borner de a à b :

SELECT TOP b-a * FROM Table WHERE Identifiant NOT IN (
SELECT TOP a Identifiant FROM Table);

Note :
- Il faut obligatoirement que Identifiant soit unique
- Pour appliquer une condition/un tri il faut la répercuter dans les 2
- Il me semble que cette requête est normalisé ANSI... Mais ne
fonctionne pas sur Oracle...

SELECT :

Exemple pour borner avec des IdClients = 1664 et les trier par nom :

SELECT TOP b-a * FROM Table WHERE IdClient = 1664 AND Identifiant NOT
IN ( SELECT TOP a Identifiant FROM Table WHERE IdClient = 1664 ORDER BY
Nom) ORDER BY Nom;

Le problème de ces requêtes c'est plus tu bornes vers la fin de la
tables plus la requête est lente (testé sur SQL Server et ODBC) !

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Emmanuel Lecoester
>>> Je vais utiliser le principe de la soustraction relationnel mais le
problème c'est que les performances se dégradent au fur et à mesure que
l'on s'éloigne du début...



interessant comme principe tu as des liens ?



Ya pas de lien... J'ai rien trouvé sur internet à part avec le ROWNUM
d'Oracle...

Ca vient de ma petite tête :

Pour borner de a à b :

SELECT TOP b-a * FROM Table WHERE Identifiant NOT IN (
SELECT TOP a Identifiant FROM Table);

Note :
- Il faut obligatoirement que Identifiant soit unique
- Pour appliquer une condition/un tri il faut la répercuter dans les 2
- Il me semble que cette requête est normalisé ANSI... Mais ne fonctionne
pas sur Oracle...

SELECT :

Exemple pour borner avec des IdClients = 1664 et les trier par nom :

SELECT TOP b-a * FROM Table WHERE IdClient = 1664 AND Identifiant NOT IN
( SELECT TOP a Identifiant FROM Table WHERE IdClient = 1664 ORDER BY Nom)
ORDER BY Nom;

Le problème de ces requêtes c'est plus tu bornes vers la fin de la tables
plus la requête est lente (testé sur SQL Server et ODBC) !



En plus rapide tu as le principe

SELECT emp_id,lname,fname FROM employee LIMIT 20,10

devient :
select * from (
select top 10 emp_id,lname,fname from (
select top 30 emp_id,lname,fname
from employee
order by lname asc
) as newtbl order by lname desc
) as newtbl2 order by lname asc

lien interressant :

http://216.239.39.104/search?qÊche:_5uXZDjGfGcJ:troels.arvin.dk/db/rdbms/+postgreSQL+limit+offset+Microsoft+SQL&hl=en&ie=UTF-8

sinon recherche dans google "limit in mssql" :)

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr




Avatar
Gilles TOURREAU
Emmanuel Lecoester a exprimé avec précision :
Je vais utiliser le principe de la soustraction relationnel mais le
problème c'est que les performances se dégradent au fur et à mesure que
l'on s'éloigne du début...



interessant comme principe tu as des liens ?



Ya pas de lien... J'ai rien trouvé sur internet à part avec le ROWNUM
d'Oracle...

Ca vient de ma petite tête :

Pour borner de a à b :

SELECT TOP b-a * FROM Table WHERE Identifiant NOT IN (
SELECT TOP a Identifiant FROM Table);

Note :
- Il faut obligatoirement que Identifiant soit unique
- Pour appliquer une condition/un tri il faut la répercuter dans les 2
- Il me semble que cette requête est normalisé ANSI... Mais ne fonctionne
pas sur Oracle...

SELECT :

Exemple pour borner avec des IdClients = 1664 et les trier par nom :

SELECT TOP b-a * FROM Table WHERE IdClient = 1664 AND Identifiant NOT IN (
SELECT TOP a Identifiant FROM Table WHERE IdClient = 1664 ORDER BY Nom)
ORDER BY Nom;

Le problème de ces requêtes c'est plus tu bornes vers la fin de la tables
plus la requête est lente (testé sur SQL Server et ODBC) !



En plus rapide tu as le principe

SELECT emp_id,lname,fname FROM employee LIMIT 20,10

devient :
select * from (
select top 10 emp_id,lname,fname from (
select top 30 emp_id,lname,fname
from employee
order by lname asc
) as newtbl order by lname desc
) as newtbl2 order by lname asc

lien interressant :

http://216.239.39.104/search?qÊche:_5uXZDjGfGcJ:troels.arvin.dk/db/rdbms/+postgreSQL+limit+offset+Microsoft+SQL&hl=en&ie=UTF-8

sinon recherche dans google "limit in mssql" :)

Cordialement

-- Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr







MErci pour le lien...

Mais en fait j'ai trouvé comment faire pour SQL Serveur afin d'utiliser
le même principe que les ROWNUM d'Oracle...
Mais pas moyen de trouver l'équivalent (ROWNUM et/ou ROW_NUMBER()) en
ODBC !

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr