Renanbg 1 Denunciar post Postado Maio 20, 2008 Olá pessoal Uso delphi 6 e paradox para um pequeno sistema Lá tem um cadastro de projetos e me pediram para colocar um campo chamado solicitante que nada mais é que o nome da pessoa que solicitou o tal projeto. Essa pessoa pode ser um cliente ou um funcionário da empresa. Então a duvida é: tem como pesquisar o o nome da pessoa na tabela clientes e na tabela funcionarios? Se fosse em apenas 1 tabela eu usaria assim: Querybusca.Close; Querybusca.SQL.Clear; Querybusca.SQL.Add('SELECT nome FROM TBCLIENTE WHERE nome LIKE ' + #39 + Edit1.Text + '%'+ #39); Querybusca.SQL.Add('AND STATUS = "ATIVO"'); Querybusca.SQL.Add('order by nome'); Querybusca.Open; Mas nas 2 tabelas tem como incrementar? Compartilhar este post Link para o post Compartilhar em outros sites
Sérgio H. Martins 0 Denunciar post Postado Maio 20, 2008 Ola amigo Tente fazer assim.... CODE Querybusca.Close; Querybusca.SQL.Clear; Querybusca.SQL.Add('SELECT TBCLIENTE.nome, TBFUNCIONARIOS.nome FROM TBCLIENTE, TBFUNCIONARIOS WHERE (((TBCLIENTE.nome) LIKE ' + #39 + Edit1.Text + '%'+ #39) and ((TBFUNCIONARIOS.nome) LIKE ' + #39 + Edit1.Text + '%'+ #39)) ; Querybusca.SQL.Add('AND STATUS = "ATIVO"'); Querybusca.SQL.Add('order by nome'); Querybusca.Open; Abraço Sergio Martins Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Maio 21, 2008 Traz apenas a tabela de clientes, mas eu resolvi mudar e fazer a pesquisa só na tabela de clientes Obrigado pela ajuda Sergio Compartilhar este post Link para o post Compartilhar em outros sites
Sérgio H. Martins 0 Denunciar post Postado Maio 21, 2008 beleza... Abraço Compartilhar este post Link para o post Compartilhar em outros sites
Discorpio 1 Denunciar post Postado Maio 25, 2008 Bom dia a todos. A instrução SQL não está correta, pois do jeito que está, está fazendo um produto cartesiano das Tabelas, ou seja, qual o critério de junção das tabelas ? Não há um campo que possa fazer associação entre os registros de ambas as tabelas, além disso, a instrução só trará os campos nome das Tabelas Clientes e Funcionários, ora quais campos da tabela Clientes e quais campos da Tabela Funcionários voce deseja visualizar ? Qual a finalidade da pesquisa ? Se for só identificar se há o texto digitado consta cadastrado em ambas as tabelas (Clientes e Funcionários), então tudo bem, o raciocínio de trazer só o valor do campo nome está correto. Porém se não for esta a finalidade, o seja, voce quer identificar outros campos de ambas as tabelas, então voce além de utilizar o código de junção de tabelas do nosso amigo Sergio, com a associação entre elas é claro, voce pode também utilização o código SQL de junção de tabelas com a cláusula INNER JOIN. Vamos a ambos os códigos: Querybusca.Close; Querybusca.SQL.Clear; Querybusca.SQL.Add('SELECT F.*, C.* FROM TBFUNCIONARIOS F, TBCLIENTES C WHERE F.Id_Func = C.Id_Func '); Querybusca.SQL.Add('AND C.nome LIKE ' + QuotedStr(Edit1.Text + '%') Querybusca.SQL.Add(' AND C.STATUS = ' + QuotedStr('ATIVO'); Querybusca.SQL.Add(' ORDER BY C.nome'); Querybusca.Open; A função QuotedStr(..) concatena aspas simples no texto. Repare também que eu usei Aliases para as Tabelas (F para Funcionários e C para Clientes), isto ajuda muito a diminuir o código e identificar melhor as tabelas. Agora com o INNER JOIN. Querybusca.Close; Querybusca.SQL.Clear; Querybusca.SQL.Add('SELECT F.* FROM TBFUNCIONARIOS F INNER JOIN TBCLIENTES C '); Querybusco.SQL.Add(' ON F.Id_Func = C.Id_Func WHERE C.nome LIKE ' + QuotedStr(Edit1.Text + '%') Querybusca.SQL.Add(' AND C.STATUS = ' + QuotedStr('ATIVO'); Querybusca.SQL.Add(' ORDER BY C.nome'); Querybusca.Open; É por ai Compartilhar este post Link para o post Compartilhar em outros sites