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 :

[Débutant]CASE WHEN...(Select... From) ELSE (SELECT...FR)-8i


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 63
    Points : 39
    Points
    39
    Par défaut [Débutant]CASE WHEN...(Select... From) ELSE (SELECT...FR)-8i
    Bonjour/Bonsoir,

    D'avance merci à tous ce qui me liront et à tous ceux qui me fileront un coup de main

    Je souhaite ramener des données de deux tables différentes en fonction de la valeur d'un champs d'une troisiéme table :
    Si dans ma TABLE1 j'ai un "F" il s'agit d'un fournisseur et il faut donc que j'aille cherche le nom du fournisseur dans la table TFOURNI
    Sinon il s'agit d'un tiers et dans ce cas je vais chercher l'infos dans la table des TIERS

    Ce qui donne en quelque sortes quelques choses comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT F.factier "Num Fo/Tiers",
           CASE F.Fattier 
             WHEN 'F' THEN (Select Fou.fnfo from Tfourni Fou where F.factier=Fou.fcfo)
    	 ELSE (Select Ti.tinom from Tiers Ti where F.factier=Ti.ticod)
           END as "Four/Tiers",
    FROM TABLE1 F
    Malheureusement pour moi, cela ne semble pas fonctionner !

    S'agit il d'une errreur de rédaction ou alors suis je en train d'essayer de faire quelque chose d'impossible à faire autrement qu'en PL/SQL ?

    Merci d'avance pour vos réponses

    Jérémy

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut Re: [Débutant]CASE WHEN...(Select... From) ELSE (SELECT...FR
    Citation Envoyé par jdotti
    Malheureusement pour moi, cela ne semble pas fonctionner !
    Difficile de t'aider avec aussi peu d'info... le message d'erreur par exemple ?
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 63
    Points : 39
    Points
    39
    Par défaut
    Salut Médiat et merci pour ta réponse ...

    En fait voici ma réquete compléte avec le message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
      1  SELECT decode(F.fatype, 'F','Fa','A','Av') "Type Fact",
      2         lpad(F.fadrec,9,' ') "Date Recep",
      3         F.fanfac "Num Fact",
      4         nvl(F.famtht,0)-nvl(F.faremi,0)+nvl(F.fatva,0) "Mt TTC",
      5         F.factier "Num Fo/Tiers",
      6         CASE WHEN F.Fattier = "F"
      7      THEN (Select T.fnfo from kfourni T where F.factier=T.fcfo)
      8      ELSE (Select Ti.tinom from ktiers Ti where F.factier=Ti.ticod)
      9         END as "Four/Tiers",
     10         F.fanoeng "NumEng",
     11         F.enexe "ExeEngt",
     12         decode(F.faceo,'B','BT','O','OS','C','Cde') "TE",
     13         C.dest "Dest",
     14         KENG.Pecodop "Nom"
     15         FROM ksaifac F, ksbsuifa C,
     16       (select Pecodop, enno, enexe
     17        from KPERSONL K, KVENG ENG
     18        where ENG.PEC=K.PEC) KENG
     19  WHERE (F.faexe=C.faexe)
     20  AND (F.fanfac=C.fanfac)
     21  AND (F.fatype=C.fatype)
     22  AND (F.fanoeng=KENG.ENNO(+)) AND (F.ENEXE=KENG.ENEXE(+))
     23  AND (F.valid is null)
     24  AND (C.dest like UPPER('%&&PARAM1%'))
     25  AND (F.fadrec >= DECODE('&&PARAM2',null,'01-JAN-00','&&PARAM2'))
     26  AND (C.rowid=(SELECT min(C2.rowid)
     27               FROM ksbsuifa C2
     28               WHERE C.fanfac=C2.fanfac))
     29* ORDER BY F.fadrec
           CASE WHEN F.Fattier = "F"
                                 *
    ERROR à la ligne 6 :
    ORA-00904: Nom de colonne non valide
    Est ce suffisant comme info ? Sachant que le nom des tables et des fournisseurs n'est pas forcement explicité et probablement très long à expliquer...

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    " '

  5. #5
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonsoir,

    CASE WHEN F.Fattier = "F"
    *
    ERROR à la ligne 6 :
    Ce ne serait pas plutôt = 'F' ? (simples-quotes au lieu de doubles)

    [edit] oups, dsl Fred_d, avec les smileys j'avais pas vu que tu avais déjà répondu[/edit]

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 63
    Points : 39
    Points
    39
    Par défaut
    Oups... J'ai un peu levé le pied sur cette requête... Effectivement, cela fonctionne beaucoup mieux avec les simples quotes...

    Désolé pour les remerciements tardifs

    [/code]

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

Discussions similaires

  1. SUM(CASE WHEN THEN 1 ELSE 0 END) SUR PLUSIEURS LIGNES
    Par Dr_No dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/11/2012, 14h35
  2. Réponses: 9
    Dernier message: 07/02/2008, 13h44
  3. Access et SELECT CASE WHEN dans requetes
    Par Orion01 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/12/2007, 11h24
  4. Réponses: 7
    Dernier message: 29/05/2007, 10h21
  5. Equivalent "Select Case when then else end" sur Paradoxe
    Par Seuh.m dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/06/2006, 08h23

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