alguem poderia ajudar neste select
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
Curtidas 0
Respostas
Catunda
16/05/2007
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
GOSTEI 0
Rjun
16/05/2007
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
GOSTEI 0