Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gitavares

Ordenação com dados de outras tabelas..

Recommended Posts

Oi gente,

 

seguinte, tenho que fazer um ranking... só que não consigo ordenar por pontos acumulados...

 

meu select está assim:

 

SELECT c.codUsuarioGeral as cdGeral, c.edtNome as nmColaborador, edtEmail, edtLogin, codColaborador, 
(SELECT COUNT(codPontuacao) FROM tbPontuacao WHERE cmbPonto = 1 AND codUsuarioGeral = c.codUsuarioGeral AND cmbStatus = '1' AND codColaboracao = 6) as Aprovadas, 
(SELECT COUNT(codPontuacao) FROM tbPontuacao WHERE cmbPonto = 0 AND codUsuarioGeral = c.codUsuarioGeral AND cmbStatus = '1' AND codColaboracao = 6) as Nulas, 
(SELECT COUNT(codPontuacao) FROM tbPontuacao WHERE cmbPonto = -1 AND codUsuarioGeral = c.codUsuarioGeral AND cmbStatus = '1' AND codColaboracao = 6) as Reprovadas, 
(SELECT SUM(cmbPonto) FROM tbPontuacao WHERE codUsuarioGeral = c.codUsuarioGeral AND cmbStatus = '1' AND codColaboracao = 6) as Acumulado, (SELECT COUNT(codPontuacao) FROM tbPontuacao WHERE cmbStatus = '0' AND codUsuarioGeral = c.codUsuarioGeral AND codColaboracao = 6) as Aguardando 
FROM tbPontuacao p, tbColaborador c, tbUsuarioGeral u 
WHERE c.cmbStatus = '1' AND p.codColaboracao = 6 AND c.codUsuarioGeral = u.codUsuarioGeral 
GROUP BY c.codUsuarioGeral, c.edtNome, edtEmail, edtLogin, codColaborador 
ORDER BY SUM(p.cmbPonto) DESC, c.codUsuarioGeral ASC

observem que no ORDER BY tem SUM(p.cmbPonto), o que obviamente não funciona. Só que não sei como fazer essa ordenação.. já tentei colocar:

-> ORDER BY Acumulado...

Erro: Too few parameters. Expected 1.

 

-> ORDER BY (SELECT SUM(cmbPonto) FROM tbPontuacao WHERE codUsuarioGeral = c.codUsuarioGeral AND cmbStatus = '1' AND codColaboracao = "&Session("codColaboracaoAtual")&")...

Erro: Syntax error. in query expression '(SELECT SUM(cmbPonto) FROM tbPontuacao WHERE codUsuarioGeral = c.codUsuarioGeral AND cmbStatus = '1' AND codColaboracao = 6)'.

 

 

 

Aguardo e obrigada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com um grande HELP do meu amigo Pedro, o problema foi resolvido assim:

 

SELECT Cola.codUsuarioGeral AS cdGeral, Cola.edtNome AS nmColaborador, edtEmail, edtLogin, codColaborador, 
SUM ( Iif (cmbPonto = 1 , Iif (Pont.cmbStatus = '1', 1 ,0),0) ) as Aprovadas, 
SUM ( Iif (cmbPonto = 0 , Iif (Pont.cmbStatus = '1', 1 ,0),0) ) as Nulas, 
SUM ( Iif (cmbPonto = -1, Iif (Pont.cmbStatus = '1', 1 ,0),0) ) as Reprovadas, 
SUM ( Iif (Pont.cmbStatus = '0', 1 ,0) ) as Aguardando, 
SUM ( Iif (Pont.cmbStatus = '1', Pont.cmbPonto ,0) ) as Acumulado 
FROM ( tbColaborador Cola INNER JOIN tbUsuarioGeral UsGe ON (Cola.codUsuarioGeral = UsGe.codUsuarioGeral AND Cola.cmbStatus = '1') ) 
LEFT OUTER JOIN tbPontuacao Pont ON (Cola.codUsuarioGeral = Pont.codUsuarioGeral AND Pont.codColaboracao = 6) 
GROUP BY Cola.codUsuarioGeral, Cola.edtNome, edtEmail, edtLogin, codColaborador 
ORDER BY SUM ( Iif (Pont.cmbStatus = '1', Pont.cmbPonto ,0) ) DESC, Cola.codUsuarioGeral ASC

http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.