Ir para conteúdo

POWERED BY:

FabianoSouza

Members
  • Total de itens

    921
  • Registro em

  • Última visita

Reputação

5 Regular

2 Seguidores

Sobre FabianoSouza

Informações Pessoais

  • Sexo
    Masculino

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

  1. FabianoSouza

    Modelagem para questionário

    Oá @Omar~! Muito obrigado pela ajuda. Sua resposta foi bastante clara e trouxe direcionamentos para eu resolver meu problema. No meu caso, são questionários que poderão ser respondidos por várias pessoas. Para responder, os usuários apenas selecionarão possíveis respostas já pré-definidas. Minha estrutura está similar ao que você sugeriu (eu tenho uma tabela de perguntas, e outra de respostas). Minha dúvida era justamente se eu deveria criar ou não a tabela "questionário". Para essa situação em particular, acredito que não precisarei criar essa tabela porque são perguntas "de sistema", ou seja, não serão criadas pelo usuário e nem pelo gestor do sistema (são questões baseadas em uma metodologia de análises comportamentais, então não mudam). Mas agora entendo que para criar avaliações para outros contextos, como por exemplo para aferir conhecimentos, eu precisarei ter essa tabela "questionário". Mais uma vez, muito obrigado pela grande ajuda. Valew!
  2. FabianoSouza

    Modelagem para questionário

    Eu tenho certa dificuldade quando preciso criar tabela para armazenar respostas de questionários/prova/testes. Minha maior dúvida é como defino se um questionário qualquer foi respondido. Para responder a essa dúvida, bastaria eu fazer SELECT na tabela que armazena as respostas (e partir do resultado criar alguma lógica), ou essas respostas precisam estar associadas a uma determinada tabela, e nessa tal tabela eu usaria um campo (como booleano, por exemplo) para determinar se o questionário foi respondido ou não? Outro ponto. Seu precisar obter a informação de "data das respostas", eu devo extrair de um campo de data da própria tabela de respostas, ou de outra tabela vinculada (dúvida similar à citada acima)? Eu acho estranho ter uma tabela auxiliar para guardar data de resposta do questionário, "status" do questionário (se foi respondido ou não) e etc. Mas também acho estranho extrair essas informações da tabela que armazena as respostas, pois as informações se repetiriam (pensando num questionário cujas respostas são gravadas juntas, ao mesmo tempo). Obrigado!!
  3. FabianoSouza

    Reutilizar contagem em SELECT

    Olá. Se eu fizer um JOIN vai acabar exibindo turmas repetidas.
  4. FabianoSouza

    SELECT de registros sem associação, com subquery

    Eu possuo a tab TURMA e a EVENTOS (que são as aulas do curso). Estão relacionadas (chave primária da TURMA com chave estrangeira de EVENTOS). Em minha consulta, eu listo as turmas. Até aqui, sem problema. Problema a ser resolvido: Quando uma determinada TURMA não tiver EVENTO associado a ela, a TURMA não aparece no select. Preciso que dados da TURMA sejam exibidos mesmo se não houver evento associado a ela (significa que ainda não há as datas definidas para a realização do curso para aquela turma). Atualmente o código está assim: SELECT TT.id, TT.nome, CTA.nomeFantasia, tmp.previsto AS Previstos, tmp.realizado AS Realizados FROM dbo.tabDeTURMA TT INNER JOIN --esse JOIN é para trazer detalhes da empresa da qual essa turma pertence... dbo.tabDeCliente AS CTA ON TT.codCliente = CTA.contaCod , (SELECT COUNT(*) previsto -- aqui faz o cálculo de percentual que preciso e formata o valor. , SUBSTRING( FORMAT( CAST((SUM(CASE WHEN EVT.dataFinal <= GETDATE() THEN 1 ELSE 0 END) / CAST(COUNT(*) AS NUMERIC (10,3)) *100) AS NUMERIC(10,3)), 'N', 'pt-BR'),1,4) AS 'realizado' , EVT.codTurma FROM dbo.tabDeEventos EVT GROUP BY EVT.codTurma) tmp --aparentemente o problema está no WHERE. Mas se eu remover, gera duplicidades WHERE TT.id = tmp.codTurma
  5. FabianoSouza

    Reutilizar contagem em SELECT

    Olá @Motta Eu queria evitar a repetição do COUNT apenas para ter melhor desempenho e reutilizar a informação.
  6. FabianoSouza

    Reutilizar contagem em SELECT

    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 + '&nbsp;'+'<span class=%22icon-aviso fcolor-critico%22 style=%22font-size:18px%22 title=Excesso&nbsp;de&nbsp;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'
  7. FabianoSouza

    Invocar function em arquivo separado

    Ops. Encontrei o problema. Podem desconsiderar esse post, por gentileza. Eu não estava linkando o arquivo B corretamente.
  8. FabianoSouza

    Invocar function em arquivo separado

    Tenho os arquivos de Javascript (.js) A e B. O arquivo A é aonde guardo as functions de uso amplo. O arquivo B é aonde guardo as functions específicas para uma área (páginas) do sistema. Eu tenho uma função genérica chamada criaGrid que monta um gridview (serve a todos os registros do sistema). Mas preciso que ela consiga invocar uma function existente no arquivo B. Vejam. //a var execFn5 é definida com o NOME de uma function //isso funciona se a function a ser executada estiver no arquivo A. //se eu coloca-la em outra arquivo, não funciona. //isso é um trecho da function principal que cria o GRID, que fica no Arquivo A. var execFn5 = window[alvoClick.getAttribute('data-fn')]; if (typeof execFn5 === 'function') { alert('Teste') }; Acho que é um questão de escopo do objeto Window. Eu precisaria fazer o objeto Window executar a function que está em outro arquivo (mas que está devidamente linkado à pagina renderizada pelo browser)
  9. FabianoSouza

    Somar horas

    Possuo a tab TURMAS e EVENTOS. Preciso que o meu select existente, que seleciona registros da tab TURMAS (que faz JOIN com a tab EVENTOS), faça soma de horas dos EVENTOS associados ao item da tab TURMAS. SELECT, Campo1, Campo2, Campo... EVT.dataInicial, EVT.dataFinal FROM tabTURMAS LEFT JOIN tabEventosTreina AS EVT ... Creio que a lógica seria essa: -pegar a diferença entre os campos EVT.dataInicial, EVT.dataFinal -totalizar essas diferenças para todos os eventos que estiverem associados pelo relacionamento de chaves PK e FK que existem. -entregar o resultado dessa operação para cada item da consulta. Com esse código abaixo (de testes), consigo retornar a diferença de horas entre as duas datas. Mas não consigo evoluir. Acredito que precisaria isolar os minutos, somá-los para ver quantas horas totalizam, somar as horas, e por fim, juntar com a soma dos minutos. DECLARE @datainicial datetime, @dataFinal datetime DECLARE @qtde_Dif_Horas VARCHAR(10) SET @datainicial = '2023/16/11 19:00:00' SET @dataFinal = '2023/16/11 22:30:00' (select @qtde_Dif_Horas = CONVERT(varchar(10), @dataFinal - @datainicial, 108)) SELECT @qtde_Dif_Horas AS 'contHoras'
  10. FabianoSouza

    Agrupar e classificar select por data

    Show de bola! Ajustei e ficou perfeito como eu precisava @Motta Muito obirgado!! SELECT ET.nomeEvento AS nome , ET.dataInicial FROM dbo.tab AS ET ORDER BY CASE WHEN ET.dataInicial > GETDATE() Then CONVERT(varchar,ET.dataInicial , 112) ELSE ET.nomeEvento END
  11. FabianoSouza

    Agrupar e classificar select por data

    Possuo uma coluna de data. Eu gostaria que os registros com datas futuras aparecessem no topo do meu select, em relação aos demais registros. Em seguida, gostaria que somente esses registros com datas futuras ficassem em ordem crescente. Algo como João | 16/11/2023 Maria | 17/11/2023 José | 20/11/2023 ----------------------------- (demais registros da base) Antônio | 20/05/2023 Rosa | 15/08/2023 Cida | 15/10/2022 Pedro | 20/05/2021 Paulo | 14/11/2020 O select seria esse. select dbo.formataData(ET.dataInicial) AS 'data' FROM dbo.tab AS ET GROUP BY ET.dataInicial
  12. FabianoSouza

    Passar argumentos para function em SQL dinâmico

    @Motta A mensagem de erro é essa: Mensagem 207, Nível 16, Estado 1, Linha 3 Nome de coluna 'Categoriaindisponívelparaexclusão' inválido. O valor entre apóstrofos seria o valor contido na variável @title, que é o segundo argumento da function. Ou seja, a execução entende que o segundo argumento é uma das colunas do select principal, e como não existe na tabela alvo da consulta, ocorre o erro.
  13. FabianoSouza

    Passar argumentos para function em SQL dinâmico

    Tenho uma function que precisa receber 02 argumentos. Ela funciona se eu aplicar num select qualquer. Mas se eu aplicar num select dinâmico, ocorre erro. Veja trecho do meu select. ... SET @sql = @sql +', dbo.retornaIco_ItemBloq((SELECT COUNT(*) FROM dbo.tab AS TT2 WHERE TT2.codCategTreina = CTT.id),'+@title+') AS ''resp''' ... No caso, o primeiro argumento da function dbo.retornaIco_ItemBloq é um SELECT COUNT. O segundo argumento é uma variável (que está devidamente declarada e definida). O erro ocorre porque ao executar (chamando EXEC(@sql) ), o SQL entende que o segundo argumento é uma coluna da consulta principal, pois existe uma vírgula antes da variável @title (que é o segundo argumento da function). Repito. Se eu aplicar essa function num select normal, funciona normalmente. Porém, preciso que funcione num SQL dinâmico porque é esse é o padrão que estou adotando para o sistema todo. A function dbo.retornaIco_ItemBloq faz o seguinte: 1) Recebe o valor do COUNT e da variável @title 2) Se o COUNT for maior que Zero, cria uma tag HTML (uma SPAN), define sua title com o valor da variável @title e passa para uma variável 3) Retorna o HTML que será exibido no resultado da consulta principal É super simples. Há outra forma de chamar a function?
  14. FabianoSouza

    Fazer count em select FROM OPENJSON

    Sim. Esse seria o erro?
  15. FabianoSouza

    Fazer count em select FROM OPENJSON

    Preciso fazer um count na quantidade de objetos (ou chaves) JSON. Isso deveria funcionar exibindo a quantidade 2. Podem ajudar? DACLARE @strFiltros VARCHAR(1000) SET @strFiltros = '{"objFiltro":[[{"contexto":"candidatos","codFiltro":"0","codCidade":"490","codEstado":"14"},{"contexto":"candidatos","codFiltro":"0","codCidade":"155","codEstado":"14"}]]}' (SELECT COUNT(*) FROM OPENJSON(@strFiltros, '$.objFiltro[0]') WHERE [key] = 'candidatos')
×

Informação importante

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