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 :

Restriction conditionnelle requête


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 27
    Par défaut Restriction conditionnelle requête
    Bonjour à tous,

    imaginez avoir une requête énorme et complexe, qui soit dit en passant fonctionne parfaitement. Ma question est la suivante: Existe-t-il un moyen de faire un filtrage, grâce au WHERE de ma requête si le champs stipulé est différent de " ".

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT blabla FROM table WHERE employé = X
    Si X="" on ne tient pas compte du WHERE employé = X
    Si X<>"" on tient compte du WHERE employé = X

    Un autre paramètre est le suivant: malheureusement, il n'y a pas que employé, mais également une vingtaine d'autre paramètre genre catégorie, pays, .....

    Merci pour vos réponses

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    C'est "" (NULL) ou " " (espace)?

    Si c'est x = NULL
    Si employe est NOT NULL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT blabla FROM TABLE 
    WHERE employé = NVL(X, employe)
    Si employe peut être NULL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT blabla FROM TABLE 
    WHERE ((X IS NOT NULL AND employe = X) OR X IS NULL)
    La seconde solution marche tout le temps.

  3. #3
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 27
    Par défaut
    Uhm je sens que l'idée est franchement bonne.

    En revanche, il ne s'agit pas de Null, mais de ' ' espace.

    En tout cas merci, c'est encore mieux à ce que je m'attendais. (Genre DECODE ou CASE WHEN)

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    S'il s'agit d'un espace.. tu vas être obligé de passer par un DECODE

  5. #5
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 27
    Par défaut


    Bon ben.... un mixte des deux?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT blabla FROM TABLE 
    WHERE ((DECODE(X,' ',NULL, NULL, NULL, X) IS NOT NULL AND employe = X) 
    OR DECODE(X,' ',NULL, NULL, NULL, X) IS NULL)
    Merci en tout cas je pense que je vais y arriver now.

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Pourquoi faire simple quand on peut faire compliqué ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT blabla FROM TABLE 
    WHERE X in (employe, ' ')

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

Discussions similaires

  1. [AC-2000] Critère conditionnel requête
    Par botilabota dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 24/04/2009, 14h12
  2. requêtes "conditionnelles"
    Par _marabout dans le forum SQL Procédural
    Réponses: 11
    Dernier message: 02/04/2006, 14h46
  3. Réponses: 9
    Dernier message: 17/10/2005, 17h13
  4. Suppression avec sous-requête conditionnelle
    Par Magnus dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/10/2005, 10h39
  5. suppression avec sous requête conditionnelle
    Par melmel dans le forum Requêtes
    Réponses: 8
    Dernier message: 18/03/2004, 23h20

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