Erro nessa query de: missing rigth parenthesis

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
pc_delphi
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 128
Registrado em: Qui, 29 Mai 2008 6:44 pm
Localização: São Paulo
Tudo posso, nAquel que me fortalece
Filipenses 4:13

SELECT DISTINCT DPTO.NU_DPTO,DPTO.DESC_DPTO
FROM GLB_DPTO DPTO ,
(SELECT NU_DPTO,SUM(QTDE_ESTOQUE_PA + QTDE_ESTOQUE_PA_OUT) PECAS FROM
TB_CTRL_ESTOQUE_PA WHERE CDG_SECAO = 4 AND CDG_COR = 001
AND CDG_TAM = '7' AND mês_ESTOQUE_PA = 8 AND
(QTDE_ESTOQUE_PA + QTDE_ESTOQUE_PA_OUT) > 0
GROUP BY NU_DPTO
ORDER BY PECAS DESC) PA
WHERE PA.NU_DPTO = DPTO.NU_DPTO

Onde está o erro? Não consigo entender. A subquery, individualmente funciona conforme o esperado. Onde eu estou errando?
Avatar do usuário
vetis
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 36
Registrado em: Sex, 25 Abr 2008 10:29 am
Localização: cariacica - es
Thiago Vetis
Creedence Clearwater Revival - :-o

Veja se isso te ajuda!

Selecionar tudo

SELECT DISTINCT DPTO.NU_DPTO,DPTO.DESC_DPTO,pra.pecas 
FROM GLB_DPTO DPTO 
join (SELECT NU_DPTO,SUM(QTDE_ESTOQUE_PA +    QTDE_ESTOQUE_PA_OUT) AS PECAS 
       FROM TB_CTRL_ESTOQUE_PA 
       WHERE CDG_SECAO = 4 
       AND CDG_COR = 001 
       AND CDG_TAM = '7' 
       AND mês_ESTOQUE_PA = 8 
       AND (QTDE_ESTOQUE_PA + QTDE_ESTOQUE_PA_OUT) > 0 
       GROUP BY NU_DPTO 
       ORDER BY PECAS DESC) pra 
ON pra.NU_DPTO = DPTO.NU_DPTO
pc_delphi
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 128
Registrado em: Qui, 29 Mai 2008 6:44 pm
Localização: São Paulo
Tudo posso, nAquel que me fortalece
Filipenses 4:13

empre que dou Join, dá esse erro:
Sql command not properly ended
Disseram-me que o Oracle 8i para trás não aceita o Join e suas variantes. Quando eu tirei o Order By da SubQuery e coloquei no final de tudo, funcionou.
Avatar do usuário
vetis
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 36
Registrado em: Sex, 25 Abr 2008 10:29 am
Localização: cariacica - es
Thiago Vetis
Creedence Clearwater Revival - :-o

você está certo no 8i e anteriores o join não funcionar, utiliza o union para emular um full-outer-join. ]

att,
joaogarcia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 91
Registrado em: Ter, 20 Mar 2007 7:19 pm
Localização: Campinas - SP
Contato:
Cordialmente,
João C. Garcia

Pessoal, apenas para conhecimento...

A única situação em que o ORDER BY é permitido em uma subconsulta é exatamente quando a subconsulta é feita na cláusula FROM, que é chamada de visão INLINE.
Em outras subconsultas a utilização do ORDER BY resulta em erro.

De qualquer forma, é bem estranho ter dado erro nesta consulta e ter funcionado após a retirada do ORDER BY. :?


T+
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

De qualquer forma, é bem estranho ter dado erro nesta consulta e ter funcionado após a retirada do ORDER BY.
Na verdade, a versão 8i (testado na versão 8.1.7) não aceita a cláusula order by em uma subquery via PL/SQL (o mesmo ocorre com o forms 6i), devido à versão do parser de PL/SQL utilizado nestas ferramentas.

No entanto, como o tópico foi postado no subforum SQL, estou assumindo que a consulta esteja sendo realizada puramente via SQL - neste caso, realmente não faz sentido este erro estar sendo apresentado.
Avatar do usuário
vetis
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 36
Registrado em: Sex, 25 Abr 2008 10:29 am
Localização: cariacica - es
Thiago Vetis
Creedence Clearwater Revival - :-o

Rafael,

Sinceramente não sei o que pode está dando de erro, pois verifiquei seu sql, fiz teste utilizando uma tabela(oracle 9i) minha e não apresentou problema.
Não está realmente fazendo sentido algum dar erro nesse sql!

Ps: Dá um bico nesse servidor com o 8i, para ver se os bits voltam a funcionar. :D

att,
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 18 visitantes