alguem poderia ajudar neste select

Delphi

16/05/2007

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


Kelly

Kelly

Curtidas 0

Respostas

Catunda

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


GOSTEI 0
Rjun

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
POSTAR