Cadastro com dados de outra tabela

07/10/2013

0

Olá pessoal,

Estou com o seguinte problema:

Tenho uma tabela de funcionários chamada tb_funcionarios. Para cada funcionário que atende a alguns quesitos ele ganha 1 numero da sorte ou 3 numeros da sorte. Ex.: Se ele não tem nenhuma falta ele ganha 3 numeros da sorte e se ele tem faltas justificadas e abonadas ele ganha somente 1. Caso ele tenha faltas injustificadas, suspenções e advertências ele não ganha nada.

tb_funcionarios
id_funcionario, INT iDENTITY (1,1) NOT NULL -> PK
nome_func NVARCHAR (255) NULL
nivel_penalidade INT NULL -> Aqui vai conter a penalidade do funcionário que pode ser 0 para nenhuma, 1 para falta abonada, 2 para falta justificada, 3 para falta injustificada, 4 para advertência e 5 para suspenção.

Até aí está OK. Já estou gerando na tabela tb_numeros a quantidade de registros com o id_funcinario para cada um que recebeu o número. Ou seja, se tenha 10 funcionários, 3 sem nenhuma penalidade, 4 com penalidades mínima (faltas abonadas e justificadas) e 3 com penalidades restritivas (suspenções, faltas injustificadas e advertências), terei na tb_numeros 9 registros dos funcionarios sem penalidades (cada 1 terá que receber 3 números) e 4 com penalidades mínimas (apenas 1 numero neste caso). Então terei 13 registros na minha base tb_numeros.



tb_numeros
id_numero INT IDENTITY (1,1) NOT NULL -> PK
id_funcionario INT NULL -> Aqui entra o ID do funcionário da tabela tb_funcionarios
numero INT NULL -> Aqui deve entrar os numeros da tabela tb_num
status INT NULL -> Aqui imaginei que para cada registro que houvesse recebido um número eu colocaria 1

Daí preciso que cada um destes registros receba 1 numero diferente e único (não pode haver registros repetidos).

Pensei da seguinte forma: Monto uma tabela chamada tb_num que conterá os 9999 numeros que posso sortear de maneira randômica, ou seja, um para cada registro que existir em minha tb_numeros, sem precisar gerar um número aleatôrio randômico. Outro deltalhe que cada número tem que ter 4 digitos e deve ser inteiro ou seja, tem que ser 0001 e não 1.

tb_num
id_num INT IDENTITY (1,1) NOT NULL -> PK
num INT NULL -> Número de 0000 a 9999
status INT -> Recebe um 1 quando o número do registro for gravado em tb_numeros. Forma de identificar se o número já foi usado ou não.

Não sei se consegui explicar bem pessoal, más é mais ou menos isso... Eu tenho muito pouco conhecimento em SQL e fazer isto via ASP não dá certo pois são muitos registros a serem gerados e muitas validações a serem feitas. Acaba dando timeout, mesmo controlando o Buffer e o Timeout. Assim o que me resta é gerar os registros via ASP e montar a colocação dos números nos registros de numeros via SQL (talvez procedure). No total são 5501 funcinários que dá 2007 com 3 numeros e 1870 com apenas 1 numero.

Desde já agradeço muito pela força pessoal.


Obrigado
Cristiano Ferreira

Cristiano Ferreira

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar