2012-09-03 4 views
1

Possible Duplicate:
How do I limit the number of rows returned by an Oracle query after ordering?Comment mettre en œuvre la limite de requête ou la pagination dans l'oracle

J'utilise comme ci-dessous requête:

SELECT url, title, metadesc FROM (
     SELECT url,title, metadesc, rownum rn FROM (
       SELECT url, title, metadesc FROM web 
      ) 
      WHERE rownum <= 60 
    ) 
    WHERE rn > 50 

il fonctionne très bien pour une seule table mais si ne se joindre à ma requête principale -à-dire

SELECT name, id, url, title, metadesc 
FROM web, emp 

il me donne l'erreur:

java.sql.SQLException: ORA-00918: column ambiguously defined 
+2

Voir ceci: http://stackoverflow.com/questions/470542/how-do-i-limit-the-number-of-rows-returned-by-an-oracle-query-after-ordering? rq = 1 – esmoreno

+0

A partir d'Oracle 12cR1, vous pouvez utiliser 'OFFSET' et' FETCH NEXT n ROWS': http://stackoverflow.com/a/26051830/1461424 – Krumia

Répondre

1

Utilisez soit alias:

SELECT e.name, e.id, w.url, w.title, w.metadesc 
    FROM web w 
    JOIN emp e ON w.xx = e.yy 

Ou le nom complet de table (plus verbeux):

SELECT emp .name, emp .id, web.url, web.title, web.metadesc 
    FROM web 
    JOIN emp ON web.xx = emp .yy 

Si une sous-requête retourne deux colonnes avec le même nom, vous ne pouvez pas faire un SELECT *:

SQL> SELECT * FROM (
    2  SELECT d1.dummy, d2.dummy 
    3  FROM dual d1, dual d2 
    4 ); 

ERROR at line 1: 
ORA-00918: column ambiguously defined 

dans ce cas, utiliser différents noms de colonnes dans la sous-requête avec des alias:

SQL> SELECT * FROM (
    2  SELECT d1.dummy dummy_d1, d2.dummy dummy_d2 
    3  FROM dual d1, dual d2 
    4 ); 

D D 
- - 
X X 
+0

merci Vincent Malgrat son travail mais ça prend beaucoup de temps Y a-t-il d'autres façons d'implémenter la pagination dans Oracle? – Pravin

+0

Ce serait une question d'optimisation. Je n'ai pas assez de données pour répondre. Je vous suggère de créer une nouvelle question avec une description de vos tables et leurs données et votre requête avec son plan optimiseur. –

Questions connexes