none
É possível contar o num de registros de uma tabela em uma computed column RRS feed

  • Pergunta

  • Em uma computed column é possível inserir um select? Tenho uma tabela Turmas, e gostaria de inserir nela uma coluna com o num atual de alunos daquela turma que está na tabela TurmaAluno que tem apenas os campo IdAluno e IdTurma.
    quarta-feira, 29 de setembro de 2010 18:55

Todas as Respostas

  • George,

    Com a sua necessidade para utilizar o comando Compute. O que você deseja computar?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]
    quarta-feira, 29 de setembro de 2010 18:58
  • Eu poderia usar uma consulta para isto:

    SELECT     dbo.TurmaAno.IdTurmaAno, dbo.TurmaAno.Ano, dbo.TurmaAno.DiaSemana, dbo.TurmaAno.Turma, dbo.TurmaAno.Periodo, dbo.TurmaAno.Idade, 

                          dbo.TurmaAno.IdHora, dbo.TurmaAno.IdEducador, dbo.TurmaAno.IsEncerrada, dbo.TurmaAno.DataAbertura, dbo.TurmaAno.DataEncerramento, 

                          dbo.TurmaAno.NumMaxEducandos, COUNT(dbo.TurmaEducando.IdTurmaAno) AS NumEducandoAtual

    FROM         dbo.TurmaEducando FULL OUTER JOIN

                          dbo.TurmaAno ON dbo.TurmaEducando.IdTurmaAno = dbo.TurmaAno.IdTurmaAno

    GROUP BY dbo.TurmaEducando.IdTurmaAno, dbo.TurmaAno.IdTurmaAno, dbo.TurmaAno.Ano, dbo.TurmaAno.DiaSemana, dbo.TurmaAno.Turma, 

                          dbo.TurmaAno.Periodo, dbo.TurmaAno.Idade, dbo.TurmaAno.IdHora, dbo.TurmaAno.IdEducador, dbo.TurmaAno.DataAbertura, 

                          dbo.TurmaAno.DataEncerramento, dbo.TurmaAno.NumMaxEducandos, dbo.TurmaAno.IsEncerrada

     

    Mas gostaria de saber  se o campo NumEducandoAtual, poderia virar um campo calculado dentro da própria tabela TurmaAno

    quarta-feira, 29 de setembro de 2010 19:27
  • George,

    Não seria o caso de utilizar as funções de agregação pois você já esta utilizando o Group By!!!

    Outra possibilidade seria criar uma sub-query e dentro desta sub-query realizar o cálculo para esta coluna.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]
    quarta-feira, 29 de setembro de 2010 19:37
  • Bom Dia,

    Uma computed column não pode ter um SELECT. O cálculo deve referenciar apenas as colunas da própria linha.
    Se você deseja ter a relação de turmas com o total de alunos, considere utilizar uma view e não uma coluna calculada.

    Dessa forma basta que você faça um SELECT sobre a VIEW.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com


    Classifique as respostas. O seu feedback é imprescindível
    quinta-feira, 30 de setembro de 2010 14:07
  • Maia,

    Então você sugeri utilizar uma view com os dados necessários e realizar o cálculo sobre a view, com isso poderemos diminiur possíveis gastos desnecessários para realizar o cálculo.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]
    quinta-feira, 30 de setembro de 2010 17:39