Erro em Select dentro de Aplicação Consulta

(Bill2011) #1

Boa tarde. Pessoal, se alguém já passou por isso e conseguiu resolver, peço que me ajudem por favor.

Tenho uma consulta que usa uma subselect na cláusula WHERE e faz um group by para contar quantos alunos possuo por curso dentro da instituição. A consulta roda normalmente em outras ferramentas e dentro do SQL Builder do próprio Scriptcase, porém, ao criar uma Aplicação Consulta com essa Select, ele não roda e resulta no seguinte erro:

[code]Error: Erro ao recuperar os campos da tabela. [IBM][CLI Driver][DB2/LINUX] SQL0119N An expression starting with “CN_NOME” specified in a SELECT clause, HAVING clause, or ORDER BY clause
is not specified in the GROUP BY clause or it is in a SELECT clause, HAVING clause, or ORDER BY clause with a column function and no GROUP BY clause is specified. SQLSTATE=42803 SQLCODE=-119

SELECT mc_cdcurso, cn_nome, count(mc_alpront) FROM escola.cursonv , escola.matcurso WHERE 1 = 0
Script: /opt/nm/www/scriptcase/devel/compat/nm_select_atualiza_2.php (208)[/code]

A SELECT em questão segue:

SELECT MC_CDCURSO, CN_NOME, COUNT(MC_ALPRONT) FROM ESCOLA.CURSONV , ESCOLA.MATCURSO WHERE CN_CDCURSO = MC_CDCURSO AND ( (MC_DTINGRES >= '2011-01-01') OR ( (MC_ALPRONT,MC_SEQUENC) IN ( SELECT MD_PRONT,MD_SEQUENC FROM ESCOLA.MATDIS , ESCOLA.EVTDISC WHERE MD_DISC = ED_DISC AND MD_EVENTOD = ED_EVENTOD AND MD_SITUACAO <> '2' AND ED_DTFINAL > '2011-05-01' ) ) ) GROUP BY MC_CDCURSO, CN_NOME;

O meu banco é o DB2 8.4 e está configurado perfeitamente com o scriptcase. Só esta SELECT que me está causando problemas.

Agradeço pela atenção.

(wanderlanlima) #2

Tente agora com esse:
Acho que era um parentese:

SELECT MC_CDCURSO, CN_NOME, COUNT(MC_ALPRONT)
FROM ESCOLA.CURSONV , ESCOLA.MATCURSO
WHERE CN_CDCURSO = MC_CDCURSO
AND (MC_DTINGRES >= ‘2011-01-01’)
OR (MC_ALPRONT,MC_SEQUENC IN (SELECT MD_PRONT,MD_SEQUENC
FROM ESCOLA.MATDIS , ESCOLA.EVTDISC
WHERE MD_DISC = ED_DISC
AND MD_EVENTOD = ED_EVENTOD
AND MD_SITUACAO <> ‘2’
AND ED_DTFINAL > ‘2011-05-01’))
GROUP BY MC_CDCURSO, CN_NOME

(Haroldo) #3

em modo debug, pega a select gerada, e rode direto no banco, se não der erro, crie uma view para essa consulta e faça a consulta em cima de view.

(Bill2011) #4

Obrigado pela ajuda, mas não funcionou. O parentese a mais era para fins lógicos, não afeta a SELECT que roda normalmente no banco.

Eu cheguei a fazer isso e deu certo. Mas ainda não resolve meu problema porque vou ter que trocar as duas datas e inserí-las como parâmetros.
Numa view não teria como.

Agradeço mesmo assim.