2016-05-27 18 views
-1

SQL問合せを作成しようとしています。 Oracle SQL Developerで動作する場合は、TableAdaptersクエリで使用します。これがクエリです。このOracleクエリーで何が問題になっていますか? (ORA-00904: "md.valores"、 "COD_TIPO_EXPE":無効な識別子)

 SELECT * 
    FROM (SELECT cexp.expediente.num_expe "Num. Expediente", 
       cexp.expediente.nif nif, cexp.expediente.interesado nombre, 
       MAX (DECODE (a.descripcion, 
           'NUMERO_FACTURA', cexp.md_valores.valor, 
           NULL 
          ) 
        ) "Numero Factura", 
       MAX (DECODE (a.descripcion, 
           'IMPORTE_FACTURA', cexp.md_valores.valor, 
           NULL 
          ) 
        ) "Importe bruto", 
       MAX (DECODE (a.descripcion, 
           'IMPORTE_NETO', cexp.md_valores.valor, 
           NULL 
          ) 
        ) "Importe neto", 
       MAX (DECODE (a.descripcion, 
           'FECHA_PRESENTACION_FACTURA', cexp.md_valores.valor, 
           NULL 
          ) 
        ) "Fecha recepcion" 
      FROM cexp.md_propiedades a 

       RIGHT JOIN 
       (cexp.expediente RIGHT JOIN cexp.md_valores 
       ON cexp.expediente.num_expe = cexp.md_valores.num_expe) 
       ON (a.propiedad = md_valores.propiedad) 
       AND (a.cod_tipo_expe = md_valores.cod_tipo_expe) 
      WHERE cexp.expediente.cod_tipo_acto = '12EO' 
     GROUP BY cexp.expediente.num_expe, 
       cexp.expediente.interesado, 
       cexp.expediente.nif, 
       cexp.expediente.cod_tipo_expe) 

THIS IS THE FAIL テキスト:ORA-00904: "md_valores" "COD_TIPO_EXPE":いいえválido

+0

「cexp」はスキーマ名ですか? –

+1

may be be cexp.md_valores.cod_tipo_expe and cexp.md_valores.propiedad – Mottor

+0

画像ではなくテキストとしてエラーを投稿してください。 – Aleksej

答えて

1

あなたFROM句identificadorは組織化されていないようです。私は本当にどのようにあなたはRIGHT JOINそれらのテーブルにしようとしています。私はそれを整理できる最高です:

FROM cexp.md_propiedades a 
    RIGHT JOIN cexp.md_valores 
      ON (a.propiedad = md_valores.propiedad 
       AND a.cod_tipo_expe = md_valores.cod_tipo_expe) 
    RIGHT JOIN cexp.expediente 
      ON cexp.expediente.num_expe = cexp.md_valores.num_expe 

このように動作するかどうかを確認してください。

表示されるエラーは、COD_TIPO_EXPEという列が、md_valores.cod_tipo_expeと呼ばれる表に存在しないか、別名a.cod_tipo_expeを使用する表に存在しないことを示します。このオプションのいずれかが正しいかどうかを確認して修正してください。

EDIT

あなたはすべてのテーブルにスキーマ名(cexp)を使用しているので、あなたがmd_valoresテーブルの上にそれを逃すので、それがかもしれません。

FROM cexp.md_propiedades a 
    RIGHT JOIN cexp.md_valores 
      ON (a.propiedad = cexp.md_valores.propiedad    --here 
       AND a.cod_tipo_expe = cexp.md_valores.cod_tipo_expe) --here 
    RIGHT JOIN cexp.expediente 
      ON cexp.expediente.num_expe = cexp.md_valores.num_expe 
+0

同じエラーです。私はcexp.md_valores.propiedadだと思うが、これも失敗する –

+0

@FranciscoJavierYanesDelgado私がやった編集を試してみてください。それがうまくいかない場合は、 'md_values'構造体と' md_propiedades'構造体も表示して確認する必要があります。 –

0

どのようにテーブルに参加しているのか理解できません。それがあなたにエラーを与えない場合は、期待される出力を得ているかどうかを確認してください。そうでなければright joinleft joinと交換しなければならないかもしれません。

また、クエリで使用されるすべての列が指定されたテーブルに存在すると仮定しています。

SELECT * 
FROM(SELECT c.num_expe "Num. Expediente", 
       c.nif nif, c.interesado nombre, 
       MAX (DECODE (a.descripcion, 
           'NUMERO_FACTURA', b.valor, 
           NULL 
          ) 
        ) "Numero Factura", 
       MAX (DECODE (a.descripcion, 
           'IMPORTE_FACTURA', b.valor, 
           NULL 
          ) 
        ) "Importe bruto", 
       MAX (DECODE (a.descripcion, 
           'IMPORTE_NETO', b.valor, 
           NULL 
          ) 
        ) "Importe neto", 
       MAX (DECODE (a.descripcion, 
           'FECHA_PRESENTACION_FACTURA', b.valor, 
           NULL 
          ) 
        ) "Fecha recepcion" 
    FROM cexp.md_propiedades a 
     RIGHT JOIN 
    cexp.md_valores b 
     ON (a.propiedad = b.propiedad AND a.cod_tipo_expe = b.cod_tipo_expe) 
    RIGHT JOIN  
     cexp.expediente c 
     ON c.num_expe = b.num_expe 
    WHERE c.cod_tipo_acto = '12EO' 
    GROUP BY c.num_expe, 
    c.interesado, 
    c.nif, 
    c.cod_tipo_expe 
    ) 
関連する問題