Unir 2 tabelas com like
Olá amigos estou precisando unir 2 tabelas usando o like será que tem jeito ??
Obs: estas tabelas não tem chaves para ser relacionadas.
Muito obrigado.
Marcelo
Curtidas 0
Respostas
Wilson Junior
05/07/2010
Poderia explicar um pouco melhor a sua dúvida. De algum exemplo.
GOSTEI 0
Marcelo
05/07/2010
Vou tentar explicar melhor tenho uma TB1 que guarda os nomes e outra TB2 que tem um campo text, tenho que ler a TB1 pesquisando com o like na TB2 , a rotina funciona mas é muito lenta estou tentando usar esta consulta, mas não esta dando certo
select TB1.descricaotxt,TB2.descricao memo from
Nometxt TB1 left join tmplj TB2 on TB2.descricao like '%'+TB1.descricaotxt+'%' obs: TB2.descricao é o campo text
Nometxt TB1 left join tmplj TB2 on TB2.descricao like '%'+TB1.descricaotxt+'%' obs: TB2.descricao é o campo text
GOSTEI 0
Rafael Oliveira
05/07/2010
Quais os campos chaves dessas tabelas?
GOSTEI 0
Marcelo
05/07/2010
As tabelas não tem relacionamentos, mas consegui fazer a consulta que queria, mas quando dou o open da query esta demorando muito para abrir, vou te monstrar o minha query, se vc tiver alguma fica para ficar mais rapida agradeço.
query.Close; query.SQL.Clear;
query.SQL.Add('select distinct TB1.codigocli,TB1.codigonome,TB2.descricaotxt,TB3.codigo from '+ 'ClienteNome TB1 inner join Nometxt TB2 on TB1.codigonome = TB2.codigonome '+
'left join tmplj TB3 on TB3.descricao like ''%''+(RTRIM(TB2.descricaotxt))+''%'' '+
'inner join ClienteServ2 TB4 on TB1.codigoserv = TB4.codigoserv '+
'where TB3.descricao is not null and TB4.status = ''A'' and TB1.codigoserv = :wserv '+
'and TB3.rodagem = :wrodagem order by TB3.codigo');
query.ParamByName('wserv').AsString := copy(combobox1.Text,1,3);
query.ParamByName('wrodagem').AsString := edit5.text;
query.Prepare;
query.Open;
query.SQL.Add('select distinct TB1.codigocli,TB1.codigonome,TB2.descricaotxt,TB3.codigo from '+ 'ClienteNome TB1 inner join Nometxt TB2 on TB1.codigonome = TB2.codigonome '+
'left join tmplj TB3 on TB3.descricao like ''%''+(RTRIM(TB2.descricaotxt))+''%'' '+
'inner join ClienteServ2 TB4 on TB1.codigoserv = TB4.codigoserv '+
'where TB3.descricao is not null and TB4.status = ''A'' and TB1.codigoserv = :wserv '+
'and TB3.rodagem = :wrodagem order by TB3.codigo');
query.ParamByName('wserv').AsString := copy(combobox1.Text,1,3);
query.ParamByName('wrodagem').AsString := edit5.text;
query.Prepare;
query.Open;
GOSTEI 0
Rafael Oliveira
05/07/2010
Voce poderia usar uma subquery após um WHERE.
Ex.:
select a.desc
from TB1 a
where a.campo_desc in (select b.desctxt from TB2 b)
Ex.:
select a.desc
from TB1 a
where a.campo_desc in (select b.desctxt from TB2 b)
GOSTEI 0