IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Recherche d'un millier de champs


Sujet :

PL/SQL Oracle

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Recherche d'un millier de champs
    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

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ident_t from personne where ident_p='1234' OR ident_p='1235' OR ...;

  3. #3
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    ou mieux (prise en compte de l'index) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    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

  5. #5
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par plaineR Voir le message
    ou mieux (prise en compte de l'index) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ident_t FROM personne WHERE ident_p in ('1234', '1235', ...
    Je ne vois pas comment on peut dire ça dans l'absolu, sans même préciser de quelle version on parle.
    Une petite démo ?
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Citation Envoyé par f3nr1 Voir le message
    Je travaille sur une base de données oracle 10.g

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    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.

  8. #8
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par f3nr1 Voir le message
    J'ai précisé la version d'Oracle dès le début de mon message (10.g)
    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 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

Discussions similaires

  1. rechercher le max d'un champ sur 2 tables
    Par rdams dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/03/2006, 13h27
  2. Comment rechercher le symbol % dans un champ?
    Par nmathon dans le forum Oracle
    Réponses: 3
    Dernier message: 18/01/2006, 17h01
  3. Recherche par une partie du champ
    Par safadev dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/10/2005, 14h20
  4. Recherche d'enregistrments dans un champs
    Par Marie D dans le forum Access
    Réponses: 16
    Dernier message: 19/09/2005, 09h01
  5. recherche valeur maximale entre deux champs
    Par maysa dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/05/2005, 09h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo