Fórum alguem poderia ajudar neste select #341838
16/05/2007
0
como posso montar este select, parece facil mas da erros.
como tenho mais de uma relação da TabMedico com TabAtend,
aparecem erros de nome campo duplicados.
TabMedico
===============
Crm........Nome
123.........Carlos
456.........Monica
789.........Joao
TabAtend
============================
NrAtend....Crm1......Crm2......Crm3
a888..........123........789
b777..........789
c666..........123.........456.........789
Resultado Desejado
===============================================
NrAtend....NomeMedico1.....NomeMedico2.....NomeMedico3
a888..........Carlos...................Joao
b777..........Joao
c666..........Carlos...................Monica..................Joao
no aguardo
como tenho mais de uma relação da TabMedico com TabAtend,
aparecem erros de nome campo duplicados.
TabMedico
===============
Crm........Nome
123.........Carlos
456.........Monica
789.........Joao
TabAtend
============================
NrAtend....Crm1......Crm2......Crm3
a888..........123........789
b777..........789
c666..........123.........456.........789
Resultado Desejado
===============================================
NrAtend....NomeMedico1.....NomeMedico2.....NomeMedico3
a888..........Carlos...................Joao
b777..........Joao
c666..........Carlos...................Monica..................Joao
no aguardo
Kelly
Curtir tópico
+ 0
Responder
Posts
16/05/2007
Catunda
olhe, a nivel de banco de dados a procedure abaixo funciona perfeitamente no firebird:
CREATE PROCEDURE NEW_PROCEDURE
RETURNS (
NRAT VARCHAR(10),
MEDICO1 VARCHAR(20),
MEDICO2 VARCHAR(20),
MEDICO3 VARCHAR(20))
AS
DECLARE VARIABLE V1 INTEGER;
DECLARE VARIABLE V2 INTEGER;
DECLARE VARIABLE V3 INTEGER;
begin
for select nratend,crm1,crm2,crm3 from tabatend into :nrat, :v1, :v2, :v3 do
begin
medico1=null;
medico2=null;
medico3=null;
if (:v1 is not null) then select nome from tabmedico where codigo=:v1 into :medico1;
if (:v2 is not null) then select nome from tabmedico where codigo=:v2 into :medico2;
if (:v3 is not null) then select nome from tabmedico where codigo=:v3 into :medico3;
suspend;
end
end
CREATE PROCEDURE NEW_PROCEDURE
RETURNS (
NRAT VARCHAR(10),
MEDICO1 VARCHAR(20),
MEDICO2 VARCHAR(20),
MEDICO3 VARCHAR(20))
AS
DECLARE VARIABLE V1 INTEGER;
DECLARE VARIABLE V2 INTEGER;
DECLARE VARIABLE V3 INTEGER;
begin
for select nratend,crm1,crm2,crm3 from tabatend into :nrat, :v1, :v2, :v3 do
begin
medico1=null;
medico2=null;
medico3=null;
if (:v1 is not null) then select nome from tabmedico where codigo=:v1 into :medico1;
if (:v2 is not null) then select nome from tabmedico where codigo=:v2 into :medico2;
if (:v3 is not null) then select nome from tabmedico where codigo=:v3 into :medico3;
suspend;
end
end
Responder
Gostei + 0
16/05/2007
Rjun
SELECT Ta.NrAtend, Tm1.Nome, Tm2.Nome, Tm3.Nome FROM TabAtend Ta LEFT JOIN TabMedico Tm1 ON Ta.Crm = Tm1.Crm LEFT JOIN TabMedico Tm2 ON Ta.Crm = Tm2.Crm LEFT JOIN TabMedico Tm3 ON Ta.Crm = Tm3.Crm
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)