Exécuter une requête avec in

[Résolu]
Signaler
Messages postés
50
Date d'inscription
dimanche 9 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2007
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour ,
     je travaille sur une requete du  'select fld  from Table where fld in list' ,  et il se trouve que la liste sur laquelle je travaille dépasse 1000 éléments et c'est la limite lorsqu'on utilise une requête avec IN avec  oracle  ( ou  c'est le message que oracle m'a affiché ) , est ce que quelqu'un a une idée comment je peux traiter  ça ?

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Re
J'y pense maintenant : D'où proviennent tes milliers de données à mettre dans ton 'In' ?
D'une autre table ?
Dans ce cas, il faut créer des sous-requètes :
Select *
  From maTable1
 Where monChamp In (Select mesMilliersDeValeurs From maTable2 Where ...)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Salut
Je ne connaissais pas cette limitation.
Pas assez d'info pour te conseiller une solution.
A mon avis, tu dois avoir un problème d'organisation des données / des Champs-Tables dans ta DB, ce n'est pas trop normal de se retrouver avec une liste aussi longue.
Refait une analyse des échanges entre tables et vois si tu ne devrais pas découper tes données en sous-tables ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
50
Date d'inscription
dimanche 9 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2007
2
c'est pas possible de faire ce genre d'organisation , c'est que je travaille sur un algorithme complexe et très long  , et c'est très fréquent dans mes procédures l'usage de In dans des requêtes avec de longue liste , et croyer moi il y a bien cette limitation car c'était bien un message de oracle et c'est bien le message qui m'a indiqué que la limite est 1000 .
  ce dont j'ai pensé c'est de travailler par packet de 1000 éléments ,  mais je ne sais pas comment stocker le résultat , avez vous une idée d'un composant qui permet de stocker le résultat des requêtes concaténées ?