Fórum Query baseada no conceito de REFERÊNCIA CRUZADA... #49574
25/02/2005
0
Estou trabalhando com FB 1.5.
Tenho uma tabela de DADOS DO FUNC. com a seguinte estrutura: FUN_COD, FUN_NOM, FUN_DTN com registros:
FUN_COD FUN_NOM FUN_DTN
1) 213 Nome_1 01/01/1976
2) 213 Nome_1 01/01/1976
3) 205 Nome_2 10/11/1966
etc...
99) 365 Nome_5 10/11/1966
100) 366 Nome_6 10/11/1966
etc...
Tenho uma outra tabela de DADOS DA VACINA POR FUNC. com a seguinte estrutura: FUN_COD, VAC_COD, DOS_REF_COD, FUN_VAC_DAP com registros:
FUN_COD VAC_COD DOS_REF_COD FUN_VAC_DAP
213 1 1 10/10/2000
213 1 2 10/11/2000
213 1 3 20/11/2000
213 3 2 05/08/2001
206 1 1 10/11/1966
etc...
Observem:
O campo VAC_COD corresponde o código da(s) vacina(s), o campo DOS_REF_COD corresponde as DOSEs e/ou Reforços aplicados e o campo FUN_VAC_DAP a data de aplicação daquela vacina.
Tenho que montar uma query que me mostre exatamente as vacinas de cada funcionário dispostos da seguinte forma:
Nome: Nome_1 - 213 Data de Nascimento: 01/01/1976
VACINAS 1ª_DOSE 2ª_DOSE 3ª_DOSE 1º_REFORÇO...
1 10/10/2000 10/11/2000 20/11/2000
2 10/10/2000 10/10/2000
E ASSIM POR DIANTE...
Obrigado a todos.
Jhb213
Curtir tópico
+ 0Posts
25/02/2005
Afarias
Entretanto, se as colunas são fixas (VACINA, 1ª, 2ª e 3ª DOSE, 1º, 2º e 3º REFORÇO apenas --- por exemplo) vc pode sim construir um stored procedure para obter este resultado.
T+
Gostei + 0
25/02/2005
Jhb213
Você poderia mostra um exemplo de como seria este código e como eu poderia imprimi-lo via Crystal Reports 8.5?
Abraço!
Gostei + 0
25/02/2005
Gandalf.nho
Gostei + 0
25/02/2005
Jhb213
Gostei + 0
25/02/2005
Afarias
create procedure matriz_vacinas(fcod varchar(5)) returns (vacina integer, dose1 date, dose2 date, dose3 date, ref1 date, ref2 date, ref3 date) as declare variable temp integer; declare variable dose integer; declare variable data date; begin vacina = null; for select vac_cod, dos_ref_cod, fun_vac_dap from vacinas where fun_cod = :fcod order by vac_cod, dos_ref_cod into :temp, :dose, :data do begin if (vacina is not null and vacina <> temp) then suspend; vacina = temp; if (dose = 1) then dose1=data; if (dose = 2) then dose2=data; if (dose = 3) then dose3=data; /* etc */ end if (vacina is not null) then suspend; end^
Gostei + 0
28/02/2005
Jhb213
Gostei + 0
28/02/2005
Afarias
T+
Gostei + 0
01/03/2005
Jhb213
Gostei + 0
01/03/2005
Afarias
Qual a dificuldade?
T+
Gostei + 0
01/03/2005
Jhb213
Agradeço! Um abraço.
Gostei + 0
01/03/2005
Afarias
apenas faça uma query:
select * from matriz_vacinas(´codigo_pessoa´);
e ... ai está o q vc deseja!! :roll:
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)