Array
(
)

usar join... sim ou não.

Pecchiai
   - 06 mar 2006

Olá passoal tenho uma grande duvida.
tenho esses dois códigos, e funcionam perfeitamente

PRIMEIRO CÓDIGO
#Código

dmContaPagar.qryContaPagar.Close;
dmContaPagar.qryContaPagar.Sql.Clear;
dmContaPagar.qryContaPagar.Sql.Add(´select ctp.*, form.nome´);
dmContaPagar.qryContaPagar.Sql.Add(´from contapagar ctp, fornecedor form´);
if Trim(edtFornecedor.Text) = ´´ then
dmContaPagar.qryContaPagar.Sql.Add(´where ctp.id_fornecedor is not null´)
else
begin
dmContaPagar.qryContaPagar.Sql.Add(´where upper(form.nome) Like :nome´);
dmContaPagar.qryContaPagar.ParamByName(´nome´).AsString := UpperCase(edtFornecedor.Text) + ´¬´;
end;
dmContaPagar.qryContaPagar.Sql.Add(´and (form.id_fornecedor = ctp.id_fornecedor)´);
dmContaPagar.qryContaPagar.Sql.Add(´order by dataemissao´);
dmContaPagar.qryContaPagar.Open;


SEGUNDO CÓDIGO
#Código
dmContaPagar.qryContaPagar.Close;
dmContaPagar.qryContaPagar.Sql.Clear;
dmContaPagar.qryContaPagar.Sql.Add(´select ctp.*, form.nome´);
dmContaPagar.qryContaPagar.Sql.Add(´from contapagar ctp´);
dmContaPagar.qryContaPagar.Sql.Add(´ineer join formecedor form on (form.id_fornecedor = ctp.id_fornecedor)´);
if Trim(edtFornecedor.Text) = ´´ then
dmContaPagar.qryContaPagar.Sql.Add(´where ctp.id_fornecedor is not null´)
else
begin
dmContaPagar.qryContaPagar.Sql.Add(´where upper(form.nome) Like :nome´);
dmContaPagar.qryContaPagar.ParamByName(´nome´).AsString := UpperCase(edtFornecedor.Text) + ´¬´;
end;
dmContaPagar.qryContaPagar.Sql.Add(´order by dataemissao´);
dmContaPagar.qryContaPagar.Open;


A pergunta é a seguinte.

Qual a melhor forma de usar tabelas relacionadas?
Pelo que andei vendo, o join está implicito.

obrigado desde já
Adilson


Aroldo Zanela
   - 07 mar 2006

Colega,

Que eu saiba, não há diferenças de performance entre uma ou outra forma. Entretanto, prefiro usar explicitamento o JOIN (Inner, Cross, Left, Right) ao invés de efetuar a associação no Where, pois acho que o código fica mais legível.