J'ai un petit problème avec une petite requete que je pourrais résumer par
ce qui suit
SELECT r_num, T.Field1, T.Fiel2
FROM (
SELECT rownum as r_num,
Field1,Field2
FROM table1
order by field1
) T
where r_num between 1 and 5
En fait, la clause Order By dans la sous-reqête ne fontionne pas, je ne sais
si j'ai le droit de faire ça.
En tout cas, comme j'ai besoin de faire de la synchronisation pour une
applic, j'ai besoin que les enregistrement soit triés dans le résultat de la
sous requête. Y a-t-il un moyen pour cela?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Bruno Baguette
Le Fri, 27 Feb 2004 11:34:25 +0100, bob a écrit :
Bonjour,
En fait, la clause Order By dans la sous-reqête ne fontionne pas, je ne sais si j'ai le droit de faire ça. En tout cas, comme j'ai besoin de faire de la synchronisation pour une applic, j'ai besoin que les enregistrement soit triés dans le résultat de la sous requête. Y a-t-il un moyen pour cela?
J'avoue que je ne vois pas le but de la sous-requête ici, est-ce que cette requête ne répond pas à vos souhaits ?
SELECT rownum as r_num,Field1,Field2 FROM table1 WHERE r_num BETWEEN 1 AND 5 ORDER BY Field1;
Si la sous-requête vous est indispensable, je sortirais carrément le ORDER BY de la sous-requête car je doute que cette clause soit utilisée dans une sous-requête (mais je peux me tromper) :
SELECT r_num, T.Field1, T.Fiel2 FROM ( SELECT rownum AS r_num,Field1,Field2 FROM table1 ) T WHERE r_num BETWEEN 1 AND 5 ORDER BY T.Field1
Essayez toujours ces deux requêtes et dites nous si cela correspond à ce que vous cherchez ou non, avec des détails :-)
Cordialement,
-- ---------------------------------------- Bruno Baguette -
Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL
Le Fri, 27 Feb 2004 11:34:25 +0100, bob a écrit :
Bonjour,
En fait, la clause Order By dans la sous-reqête ne fontionne pas, je ne
sais si j'ai le droit de faire ça.
En tout cas, comme j'ai besoin de faire de la synchronisation pour une
applic, j'ai besoin que les enregistrement soit triés dans le résultat
de la sous requête. Y a-t-il un moyen pour cela?
J'avoue que je ne vois pas le but de la sous-requête ici, est-ce que
cette requête ne répond pas à vos souhaits ?
SELECT rownum as r_num,Field1,Field2
FROM table1
WHERE r_num BETWEEN 1 AND 5
ORDER BY Field1;
Si la sous-requête vous est indispensable, je sortirais carrément le
ORDER BY de la sous-requête car je doute que cette clause soit utilisée
dans une sous-requête (mais je peux me tromper) :
SELECT r_num, T.Field1, T.Fiel2
FROM (
SELECT rownum AS r_num,Field1,Field2
FROM table1
) T
WHERE r_num BETWEEN 1 AND 5
ORDER BY T.Field1
Essayez toujours ces deux requêtes et dites nous si cela correspond à ce
que vous cherchez ou non, avec des détails :-)
Cordialement,
--
----------------------------------------
Bruno Baguette - bouchon@alussinan.org
Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL
En fait, la clause Order By dans la sous-reqête ne fontionne pas, je ne sais si j'ai le droit de faire ça. En tout cas, comme j'ai besoin de faire de la synchronisation pour une applic, j'ai besoin que les enregistrement soit triés dans le résultat de la sous requête. Y a-t-il un moyen pour cela?
J'avoue que je ne vois pas le but de la sous-requête ici, est-ce que cette requête ne répond pas à vos souhaits ?
SELECT rownum as r_num,Field1,Field2 FROM table1 WHERE r_num BETWEEN 1 AND 5 ORDER BY Field1;
Si la sous-requête vous est indispensable, je sortirais carrément le ORDER BY de la sous-requête car je doute que cette clause soit utilisée dans une sous-requête (mais je peux me tromper) :
SELECT r_num, T.Field1, T.Fiel2 FROM ( SELECT rownum AS r_num,Field1,Field2 FROM table1 ) T WHERE r_num BETWEEN 1 AND 5 ORDER BY T.Field1
Essayez toujours ces deux requêtes et dites nous si cela correspond à ce que vous cherchez ou non, avec des détails :-)
Cordialement,
-- ---------------------------------------- Bruno Baguette -
Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL
bob
En fait j'utilisais votre deuxième requête au départ mais je me suis aperçu que le tri ne se faisait pas en fonction de la sous requête mais des résultats conditionnés par le rownum. La première ne peut fonctionner que si j'ai un 'Where rownum < uneValeur' mais pas avec 'WHERE rownum between debut and fin', car le rownum est à chaque fois décalé, et au final, rien de sort de cette requête. Vous pouvez d'ailleurs le vérifier assez facilement.
Le but de ma requête est de pouvoir faire de la pagination, donc de renvoyé les résultats en fonction d'une page précis, d'où la condition 'WHERE r_num BETWEEN debut AND fin'
En fait ma requête fonctionne bien, mais seulement à partir de la version 8i, or je suis sur une version 8.0.5. Au final, je suis obligé de trouver une autre solution.
Mais merci de votre attention
"Bruno Baguette" a écrit dans le message news:
Le Fri, 27 Feb 2004 11:34:25 +0100, bob a écrit :
Bonjour,
> En fait, la clause Order By dans la sous-reqête ne fontionne pas, je ne > sais si j'ai le droit de faire ça. > En tout cas, comme j'ai besoin de faire de la synchronisation pour une > applic, j'ai besoin que les enregistrement soit triés dans le résultat > de la sous requête. Y a-t-il un moyen pour cela?
J'avoue que je ne vois pas le but de la sous-requête ici, est-ce que cette requête ne répond pas à vos souhaits ?
SELECT rownum as r_num,Field1,Field2 FROM table1 WHERE r_num BETWEEN 1 AND 5 ORDER BY Field1;
Si la sous-requête vous est indispensable, je sortirais carrément le ORDER BY de la sous-requête car je doute que cette clause soit utilisée dans une sous-requête (mais je peux me tromper) :
SELECT r_num, T.Field1, T.Fiel2 FROM ( SELECT rownum AS r_num,Field1,Field2 FROM table1 ) T WHERE r_num BETWEEN 1 AND 5 ORDER BY T.Field1
Essayez toujours ces deux requêtes et dites nous si cela correspond à ce que vous cherchez ou non, avec des détails :-)
Cordialement,
-- ---------------------------------------- Bruno Baguette -
Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL
En fait j'utilisais votre deuxième requête au départ mais je me suis aperçu
que le tri ne se faisait pas en fonction de la sous requête mais des
résultats conditionnés par le rownum. La première ne peut fonctionner que si
j'ai un 'Where rownum < uneValeur' mais pas avec 'WHERE rownum between debut
and fin', car le rownum est à chaque fois décalé, et au final, rien de sort
de cette requête. Vous pouvez d'ailleurs le vérifier assez facilement.
Le but de ma requête est de pouvoir faire de la pagination, donc de renvoyé
les résultats en fonction d'une page précis, d'où la condition 'WHERE r_num
BETWEEN debut AND fin'
En fait ma requête fonctionne bien, mais seulement à partir de la version
8i, or je suis sur une version 8.0.5. Au final, je suis obligé de trouver
une autre solution.
Mais merci de votre attention
"Bruno Baguette" <bouchon@alussinan.org> a écrit dans le message news:
pan.2004.02.27.12.28.28.662000@usenet.baguette.net...
Le Fri, 27 Feb 2004 11:34:25 +0100, bob a écrit :
Bonjour,
> En fait, la clause Order By dans la sous-reqête ne fontionne pas, je ne
> sais si j'ai le droit de faire ça.
> En tout cas, comme j'ai besoin de faire de la synchronisation pour une
> applic, j'ai besoin que les enregistrement soit triés dans le résultat
> de la sous requête. Y a-t-il un moyen pour cela?
J'avoue que je ne vois pas le but de la sous-requête ici, est-ce que
cette requête ne répond pas à vos souhaits ?
SELECT rownum as r_num,Field1,Field2
FROM table1
WHERE r_num BETWEEN 1 AND 5
ORDER BY Field1;
Si la sous-requête vous est indispensable, je sortirais carrément le
ORDER BY de la sous-requête car je doute que cette clause soit utilisée
dans une sous-requête (mais je peux me tromper) :
SELECT r_num, T.Field1, T.Fiel2
FROM (
SELECT rownum AS r_num,Field1,Field2
FROM table1
) T
WHERE r_num BETWEEN 1 AND 5
ORDER BY T.Field1
Essayez toujours ces deux requêtes et dites nous si cela correspond à ce
que vous cherchez ou non, avec des détails :-)
Cordialement,
--
----------------------------------------
Bruno Baguette - bouchon@alussinan.org
Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL
En fait j'utilisais votre deuxième requête au départ mais je me suis aperçu que le tri ne se faisait pas en fonction de la sous requête mais des résultats conditionnés par le rownum. La première ne peut fonctionner que si j'ai un 'Where rownum < uneValeur' mais pas avec 'WHERE rownum between debut and fin', car le rownum est à chaque fois décalé, et au final, rien de sort de cette requête. Vous pouvez d'ailleurs le vérifier assez facilement.
Le but de ma requête est de pouvoir faire de la pagination, donc de renvoyé les résultats en fonction d'une page précis, d'où la condition 'WHERE r_num BETWEEN debut AND fin'
En fait ma requête fonctionne bien, mais seulement à partir de la version 8i, or je suis sur une version 8.0.5. Au final, je suis obligé de trouver une autre solution.
Mais merci de votre attention
"Bruno Baguette" a écrit dans le message news:
Le Fri, 27 Feb 2004 11:34:25 +0100, bob a écrit :
Bonjour,
> En fait, la clause Order By dans la sous-reqête ne fontionne pas, je ne > sais si j'ai le droit de faire ça. > En tout cas, comme j'ai besoin de faire de la synchronisation pour une > applic, j'ai besoin que les enregistrement soit triés dans le résultat > de la sous requête. Y a-t-il un moyen pour cela?
J'avoue que je ne vois pas le but de la sous-requête ici, est-ce que cette requête ne répond pas à vos souhaits ?
SELECT rownum as r_num,Field1,Field2 FROM table1 WHERE r_num BETWEEN 1 AND 5 ORDER BY Field1;
Si la sous-requête vous est indispensable, je sortirais carrément le ORDER BY de la sous-requête car je doute que cette clause soit utilisée dans une sous-requête (mais je peux me tromper) :
SELECT r_num, T.Field1, T.Fiel2 FROM ( SELECT rownum AS r_num,Field1,Field2 FROM table1 ) T WHERE r_num BETWEEN 1 AND 5 ORDER BY T.Field1
Essayez toujours ces deux requêtes et dites nous si cela correspond à ce que vous cherchez ou non, avec des détails :-)
Cordialement,
-- ---------------------------------------- Bruno Baguette -
Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL
Bruno Baguette
Le Fri, 27 Feb 2004 13:40:58 +0100, bob a écrit :
re-Bonjour :-)
Le but de ma requête est de pouvoir faire de la pagination, donc de renvoyé les résultats en fonction d'une page précis, d'où la condition 'WHERE r_num BETWEEN debut AND fin'
En fait ma requête fonctionne bien, mais seulement à partir de la version 8i, or je suis sur une version 8.0.5. Au final, je suis obligé de trouver une autre solution.
Pour faire de la pagination pour une requête, j'utilise la clause LIMIT (nombre de tuples maximum) et la clause OFFSET (point de départ).
En incrémentant l'OFFSET à chaque page, j'obtiens ainsi une pagination.
Je travaille essentiellement sous PostgreSQL, mais je serais tout de même étonné qu'Oracle ne possède pas ces clauses.
Sur certains SGBD, ce genre de requête (avec OFFSET) est parfois mise en cache (query cache) afin de donner des réponses plus rapides pour une requête identique mais avec un OFFSET différent.
Mais merci de votre attention
De rien, le forum sert à ca :-)
Cordialement,
PS : Faites attention de répondre en dessous du message et de ne citer que la partie du message nécessaire à la compréhension. (cf. http://giromini.org/usenet-fr/repondre.html) :-)
-- ---------------------------------------- Bruno Baguette -
Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL
Le Fri, 27 Feb 2004 13:40:58 +0100, bob a écrit :
re-Bonjour :-)
Le but de ma requête est de pouvoir faire de la pagination, donc de
renvoyé les résultats en fonction d'une page précis, d'où la
condition 'WHERE r_num BETWEEN debut AND fin'
En fait ma requête fonctionne bien, mais seulement à partir de la
version 8i, or je suis sur une version 8.0.5. Au final, je suis obligé
de trouver une autre solution.
Pour faire de la pagination pour une requête, j'utilise la clause LIMIT
(nombre de tuples maximum) et la clause OFFSET (point de départ).
En incrémentant l'OFFSET à chaque page, j'obtiens ainsi une pagination.
Je travaille essentiellement sous PostgreSQL, mais je serais tout de même
étonné qu'Oracle ne possède pas ces clauses.
Sur certains SGBD, ce genre de requête (avec OFFSET) est parfois mise en
cache (query cache) afin de donner des réponses plus rapides pour une
requête identique mais avec un OFFSET différent.
Mais merci de votre attention
De rien, le forum sert à ca :-)
Cordialement,
PS : Faites attention de répondre en dessous du message et de ne citer
que la partie du message nécessaire à la compréhension. (cf.
http://giromini.org/usenet-fr/repondre.html) :-)
--
----------------------------------------
Bruno Baguette - bouchon@alussinan.org
Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL
Le but de ma requête est de pouvoir faire de la pagination, donc de renvoyé les résultats en fonction d'une page précis, d'où la condition 'WHERE r_num BETWEEN debut AND fin'
En fait ma requête fonctionne bien, mais seulement à partir de la version 8i, or je suis sur une version 8.0.5. Au final, je suis obligé de trouver une autre solution.
Pour faire de la pagination pour une requête, j'utilise la clause LIMIT (nombre de tuples maximum) et la clause OFFSET (point de départ).
En incrémentant l'OFFSET à chaque page, j'obtiens ainsi une pagination.
Je travaille essentiellement sous PostgreSQL, mais je serais tout de même étonné qu'Oracle ne possède pas ces clauses.
Sur certains SGBD, ce genre de requête (avec OFFSET) est parfois mise en cache (query cache) afin de donner des réponses plus rapides pour une requête identique mais avec un OFFSET différent.
Mais merci de votre attention
De rien, le forum sert à ca :-)
Cordialement,
PS : Faites attention de répondre en dessous du message et de ne citer que la partie du message nécessaire à la compréhension. (cf. http://giromini.org/usenet-fr/repondre.html) :-)
-- ---------------------------------------- Bruno Baguette -
Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL