PESQUISA EM TODOS OS CAMPOS DA TABELA

ARCADYUM 12/06/2015 11:20:21
#447658
Eu estou precisando de uma ajuda com o seguinte: Gostaria de utillizar um tetxbox para pesquisar em todos os campos de uma determinada tabela. Ou seja, especifico um termo no textbox e o select se dá em todos os campos. Utilizo FireBird.
Desde já agradeço,
TUNUSAT 12/06/2015 11:37:38
#447659
ARCADYUM,

A minha ideia era fazer um SELECT com uma cláusula WHERE listando cada campo (em looping) igualando ao que você quer procurar... mas achei isso na internet (abaixo)... pode ser até seja melhor... talvez você precise adaptar para seu banco de dados:

========================================================
http://www.bufaloinfo.com.br/dicas.aspx?cod=998
Dica No : 998
Assunto : SQL Server
Titulo: Pesquisar por uma string em todos os campos de uma tabela
========================================================
Eventualmente, para alguns tipos de aplicações, pode ser desejável fazer uma pesquisa por um valor texto em todas as colunas de uma tabela. Para isso essa procedue abaixo pode auxiliar :
CREATE PROCEDURE sp_FindStringInTable @stringToFind VARCHAR(100), @schema sysname, @table sysname 
AS

DECLARE @sqlCommand VARCHAR(8000)
DECLARE @where VARCHAR(8000)
DECLARE @columnName sysname
DECLARE @cursor VARCHAR(8000)

BEGIN TRY
SET @sqlCommand = SELECT * FROM + @schema + . + @table + WHERE
SET @where =

SET @cursor = DECLARE col_cursor CURSOR FOR SELECT COLUMN_NAME
FROM + DB_NAME() + .INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = + @schema +
AND TABLE_NAME = + @table +
AND DATA_TYPE IN (char,nchar,ntext,nvarchar,text,varchar)

EXEC (@cursor)

OPEN col_cursor
FETCH NEXT FROM col_cursor INTO @columnName

WHILE @@FETCH_STATUS = 0
BEGIN
IF @where <>
SET @where = @where + OR

SET @where = @where + + @columnName + LIKE + @stringToFind +
FETCH NEXT FROM col_cursor INTO @columnName
END

CLOSE col_cursor
DEALLOCATE col_cursor

SET @sqlCommand = @sqlCommand + @where
--PRINT @sqlCommand
EXEC (@sqlCommand)
END TRY
BEGIN CATCH
PRINT There was an error
IF CURSOR_STATUS(variable, col_cursor) <> -3
BEGIN
CLOSE col_cursor
DEALLOCATE col_cursor
END
END CATCH

========================================================
A procedure usa um select em tabela de sistema para recuperar o nome das colunas da tabela que é recebida como parâmetro
é aberto um cursor com a lista de colunas da tabela recebida como parâmetro
Um laço no cursor monta uma clausula where para pesquisar em todas as colunas da tabela
O where e a instrução SQL são unidos e executados
========================================================

[][ô]s,
Tunusat.
ACCIOLLY 12/06/2015 11:38:09
#447660
Resposta escolhida
através da linguagem de manipulação de dados (DML) tudo é possível
Pelo que entendi vc quer através de um SELCT * FROM WHERE [Ô]Vários Campos[Ô].
Tudo que precisa é saber o que quer, como quer e como utilizar os operadores lógicos do SQL. Eu particularmente só utilizo um filtro de pesquisa por questões de performace. Mas se não me engano vc pode pesquisar por vários campos utilizando o AND e/ou OR. O primeiro retornará resultados se todos os termos forem verdadeiros e o segundo retornará um resultado se pelo menos um dos termos forem verdadeiros. (Isso cai muito em provas de concurso, sugiro que estude a tabela verdade).
Ficaria mais ou menos assim:

Usando o And:
SELECT * FROM suaTabela WHERE campo1 = valor AND campo2 = valor AND campo3 = valor...

Usando o Or
SELECT * FROM suaTabela WHERE campo1 = valor OR campo2 = valor OR campo3 = valor...

é mais ou menos por aí! rsrsrs

é bom vc dar uma aprofundada no SQL e estudar sobre os operadores lógicos dele, blz!
TUNUSAT 12/06/2015 11:39:36
#447661
ARCADYUM,

A minha ideia inicial é mais ou menos isso:

=========================================
Quick Tips : Consultando as tabela e campos no Firebird através de tabelas de sistemas.
http://www.devmedia.com.br/quick-tips-consultando-as-tabela-e-campos-no-firebird-atraves-de-tabelas-de-sistemas/15066
=========================================

[][ô]s,
Tunusat.
ARCADYUM 12/06/2015 17:46:47
#447672
Entendi,
Achei que seria possivel através de uma expressão Sql mais especifica que não conhecia.
Vou testar as duas e retorno.
Obrigado pela atenção. No caso vou utilizar um like nas expressões de busca.
ARCADYUM 15/06/2015 19:05:37
#447745
Pessoal,
Obrigado pela atenção.
Tópico encerrado , respostas não são mais permitidas