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

Oracle Discussion :

Probleme avec multiple valeur d'un champ


Sujet :

Oracle

  1. #1
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 41
    Points
    41
    Par défaut Probleme avec multiple valeur d'un champ
    salut :

    j'ai un petit souci , mon proleme est :

    voila ces deux requetes :

    1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT p.nomach
    From vue_stn_rel_litige p , stn_rel_relcom r
    Where p.LOGIN = 100293
    AND (
    (NVL((:FILTRELITIGE ),'0') <> '0' and Exists ( select 'X' from factures where soldedevbas <> 0 and code_statusfac in (:FILTRELITIGE )))
    OR (:FILTRELITIGE = '0' )
    )
    and p.numach = r.numach
    cette requette donne liste vide (rien).

    2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT p.nomach
    From vue_stn_rel_litige p , stn_rel_relcom r
    Where p.LOGIN = 100293
    AND (
    (NVL((:FILTRELITIGE ),'0') <> '0' and Exists ( select 'X' from factures where soldedevbas <> 0 and code_statusfac in ('DIS02','DIS03','DIS04')))
    OR (:FILTRELITIGE = '0' )
    )
    and p.numach = r.numach
    et cette deuxieme requette donne le vrai resultat (10 ligne).

    Pourtant la difference est que j'ai remplacer le :FILTRELITIGE par 'DIS02','DIS03','DIS04' dans la deuxieme requete !!!!!!!!!!!!!!!!!


    pouvez vous m'aider svp.
    merci d'avance.

  2. #2
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Je crois que tu t'es mélangé les pinceaux !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    code_statusfac in (:FILTRELITIGE )
    Tu dois surement utiliser une autre variable ( par exemple :FILTREFACTURE) !

  3. #3
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 41
    Points
    41
    Par défaut
    Non justement :

    (NVL((:FILTRELITIGE ),'0') <> '0' and Exists ( select 'X' from factures where soldedevbas <> 0 and code_statusfac in (:FILTRELITIGE )))

    dans cette ligne je teste si le filtre n'est pas vide je rajoute à ma requette cette condition.

    le probleme quand j'execute sous TOAD les deux requettes donnenet pas le meme resultat.

  4. #4
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Chez moi 'IN (:FILTRELITIGE)' ne marche pas
    (sous TOAD)
    Je dois faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    code_statusfac in (&FILTRELITIGE )
    A mon sens, il n'est pas tres propre de vouloir faire dire deux choses differentes à FILTRELITIGE (soit un flag, soit une liste de valeurs)

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Hello,


    Je crois que ton erreur vient du faite que tu veux utiliser une variable pour faire une liste de valeur.

    En effet, ta bind variable :FILTRELITIGE ne renvoie qu'une seule valeur donc tu ne peux pas dire que :

    avec :FILTRELITIGE := 'DIS02','DIS03','DIS04'
    code_statusfac in (:FILTRELITIGE )
    <=>
    code_statusfac in ( 'DIS02','DIS03','DIS04')

    Dans le premier cas on recherche si code_statusfac = "'DIS02','DIS03','DIS04'"

    Dans le deuxieme cas on recherche
    si code_statusfac = 'DIS02' ou
    code_statusfac = 'DIS03' ou
    code_statusfac = 'DIS04'

    ++

Discussions similaires

  1. Probleme avec plusiers valeur d'un champ
    Par Delphieur dans le forum Oracle
    Réponses: 3
    Dernier message: 17/07/2007, 15h58
  2. jointure sur champ avec multiple valeur
    Par robert_trudel dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/05/2007, 17h40
  3. Réponses: 8
    Dernier message: 31/05/2006, 11h10
  4. PROBLEME avec limitation de longueur de champ...
    Par zarbydigital dans le forum Bases de données
    Réponses: 10
    Dernier message: 05/10/2005, 11h02
  5. Problème avec une valeur decimale
    Par vbcasimir dans le forum Linux
    Réponses: 3
    Dernier message: 12/07/2005, 11h00

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