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

SQL Oracle Discussion :

Recherche % dans un IN


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Par défaut Recherche % dans un IN
    Bonjour,

    Je suis en train de bloqué sur une requête SQL. La solution n'est pas forcément compliqué, mais je ne sais pas comment faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT device.name
      FROM device
        WHERE 'NomMachine%' IN (select name from device_alias where device.id = device_id)
    Le but étant qu'en recherchant un certains alias (par exemple seulement le début) on puisse me sortir le nom de la machine. C'est pourquoi j'ai besoins du %, mais ça me pose un problème. Si je l'enlève ça fonctionne.

    Pouvez-vous m'éclairer ?

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Et pourquoi pas simplement ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT device.name
      FROM device, device_alias 
     WHERE device.id = device_alias.device_id 
         AND name like 'NomMachine%'

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Par défaut
    C'est vrai que cette requête fonctionne. Mais j'utilise la première partie de ma requête (le SELECT simple) dans un package pl/sql à l'aide d'une view. Et selon les informations que je rentre, je dois rechercher par rapport à l'alias à une ip ou autre. Il me faudrait donc faire ma sous-requête à l'extérieur.

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    je ne comprends pas

    c'est quoi le code exactement ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Par défaut
    Désolé de m'être mal exprimé.

    Alors j'ai une vue --> Device.

    J'utilise cette vue dans un package avec certaines function. J'ai créer un site web pour rechercher des informations dans ma base de donnée avec différentes options. Ce site appel des functions de mon package.

    A partir de ce qu'on recherche sur mon site, je retourne le nom de mon device (machine).

    Voici la partie qui m'intéresse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     IF pv_device_name IS NOT NULL
          THEN
             DBMS_SESSION.set_context ('WEB_CTX',
                                       'device_name',
                                       LOWER (pv_device_name) || '%'
                                      );
             wv_query :=
                   wv_query
                || ' AND (name LIKE SYS_CONTEXT(''WEB_CTX'', ''device_name'') OR SYS_CONTEXT(''WEB_CTX'', ''device_name'') IN (SELECT device_alias.name FROM device_alias WHERE device.id = device_alias.device_id))';
          END IF;
    Donc le but est de recherché un device ou alors de recherché l'alias (= un pseudo) qui me retourne le device concerné. Mais de cette façon ça ne fonctionne pas à cause du %.

    J'espère avoir été plus clair.

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Parce que le % est inclus dans la chaine. Tu dois faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     IF pv_device_name IS NOT NULL
          THEN
             DBMS_SESSION.set_context ('WEB_CTX',
                                       'device_name',
                                       LOWER (pv_device_name) 
                                      );
             wv_query :=
                   wv_query
                || ' AND (name LIKE SYS_CONTEXT(''WEB_CTX'', ''device_name'') || ''%'' OR EXISTS (SELECT 1 FROM device_alias WHERE device.id = device_alias.device_id and device_alias.name LIKE SYS_CONTEXT(''WEB_CTX'', ''device_name'') || ''%'' ))';
          END IF;
    j'ai aussi remplacé IN par EXISTS pour faire le like

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de recherche dans une BD
    Par ledevelopeur dans le forum Bases de données
    Réponses: 5
    Dernier message: 28/04/2004, 09h49
  2. recherche dans un projet
    Par FreshVic dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 26/04/2004, 20h04
  3. [LG]rechercher dans un fichier texte
    Par BadFox dans le forum Langage
    Réponses: 11
    Dernier message: 01/12/2003, 15h57
  4. [BPW]Problème de recherche dans une boîte liste
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 14
    Dernier message: 05/07/2003, 15h10
  5. recherche dans un document xml via DOM
    Par ndoye_zaff dans le forum APIs
    Réponses: 5
    Dernier message: 11/06/2003, 14h44

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