|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : septembre 2008 Messages : 2 ![]() |
Bonjour,
Je travaille sur une base de données oracle 10.g sur laquelle on me demande de faire une recherche de champs sur 1778 conditions différentes. Au départ j'ai eu l'idée de créer 1778 select différents dans un .sql. Exemple: select ident_t from personne where ident_p='1234'; select ident_t from personne where ident_p='1235'; ... Lorsque je lance mon .sql dans pl/sql developper il m'ouvre 1778 fenêtres. Y a-t-il un moyen de rentrer l'intégralité des résultats dans une seule fenêtre. J'ai pensé à une boucle for mais je ne sais pas comment faire. Merci |
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Inscription : août 2008 Messages : 835 ![]() |
Salut,
Code :
SELECT ident_t FROM personne WHERE ident_p='1234' OR ident_p='1235' OR ...; |
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
ou mieux (prise en compte de l'index) :
Code :
SELECT ident_t FROM personne WHERE ident_p IN ('1234', '1235', ...
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() Inscription : août 2008 Messages : 835 ![]() |
C'est juste, je sais pas pourquoi je suis parti sur une liste de OR
![]() Soit dit en passant f3nr1, si tes valeurs se suivent ou sont par plages, tu peux aussi utiliser des clauses between. La liste de 1778 valeurs, c'est assez indigeste |
|
|
00
|
|
|
#5 | |
![]() Inscription : décembre 2002 Messages : 2 401 ![]() |
Citation:
Une petite démo ?
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() Inscription : août 2008 Messages : 835 ![]() |
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : septembre 2008 Messages : 2 ![]() |
J'ai précisé la version d'Oracle dès le début de mon message (10.g)
J'avais pensé à un between mais dans mon cas ce n'est pas applicable car c'est 1778 champs parmi 40000 environ. Je vais le tenter de passer par le IN car ce sera surement plus facile que passer par les OR. Merci pour vos réponses. |
|
|
00
|
|
|
#8 |
![]() Inscription : décembre 2002 Messages : 2 401 ![]() |
Ma remarque sur la version s'appliquait à la réponse de Plainer.
Je ne vois pas comment on peut dire en toute généralité qu'un IN utilise les index contrairement au OR. En 10g, un test basique montre que le OR prend en compte les index aussi. Comme Plainer n'a pas l'habitude de dire des énormités, je suppose qu'il avait une subtilité particulière en tête (une certaine version, etc).
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com