Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu preciso exibir duas informações em minha consulta:
1) A quantidade de pessoas inscritas numa turma de treinamento (isso é feito com um simples COUNT)
2) Uma flag de excesso de inscrições na turma. Seria obtido pela comparação entre a quantidade máxima permitida (já existe esse campo) e o COUNT feito acima.
Até aqui sem problemas.
O que quero é evitar fazer duas contagens (1 para saber a quantidade de inscritos, e outra para gerar a flag de excesso de inscrições).
Há uma forma de utilizar UMA contagem para atender as duas necessidades?
Meu código está assim:
...
--AQUI FAZ A COMPARAÇÃO PARA GERAR A FLAG DE EXCESSO DE INSCRIÇÕES
, CASE WHEN (SELECT COUNT(*) FROM dbo.tab AS ITT WHERE ITT.codTurmaDeTreina = T.id) > T.lotacaoMax Then
T.nome + ' '+'<span class=%22icon-aviso fcolor-critico%22 style=%22font-size:18px%22 title=Excesso de inscrições></span>'
--AQUI FAZ A CONTAGEM DE INSCRIÇÕES
, (SELECT COUNT(*) FROM dbo.tab AS ITT WHERE ITT.codTurmaDeTreina = T.id) AS 'Inscrições'
Olá @Motta
Eu queria evitar a repetição do COUNT apenas para ter melhor desempenho e reutilizar a informação.
Isto seria uma preocupação se :
1 A consulta é feita muitas vezes , por exemplo uma busca em boca de caixa de um mercado grande.
2 A tabela tem zilhões de registros.
Fora isto é complicar, ao meu ver, coisas simples.
>
Em 27/01/2024 at 13:24, gersonab disse:
perdão, não seria melhor você fz um join e compara depoisr ? conforme o número de inscritos em uma turma e o máximo q pode naquela turma ?
tomando como base que estão em tabelas diferentes.
Olá.
Se eu fizer um JOIN vai acabar exibindo turmas repetidas.
Se eu entendi ...