Evento OnInit da consulta

(system) #1

Seguinte, tenho várias tabelas em meu banco de dados todas ligadas a uma tabela principal, preciso fazer uma consulta com filtro para TODOS os campos de TODAS as tabelas, tentei de várias maneiras mas o mysql sempre tranca na execução por me retornar resultados enormes e muito demorados.
entao pensei em fazer o seguinte, a consulta inicia pelo filtro entao se tiver algum dado de uma tabela que nao seja a principal quero qdo for pesquisar eu verifique primeiro na tabela secundaria e apenas os resultados deste eu verifique na tabela principal ou seja na consulta original, algo tipo:

if({campo_tabela_secuntaria}) {
$resultado = sc_slq_exec(“select * from tabela_secundaria where campo_tabela_secundaria like ‘{campo_tabela_secundaria}’”);
}

if($resultado){
executa a pesquisa principal a que o sc cria usando apenas os resultados encontrado acima
}

Alguem pode me ajudar ???

(Haroldo) #2

a consulta tem que possuir o select com as colunas fixas, não pode trocar todo select dinamicamente, apenas a cláusula where e que pode.
Eu construiria uma view para resolver o problema.

(system) #3

Pois é eu já havia percebido que nao tenho como alterar a pesquisa principal, por isto queria apenas utilizar os resultados encontrados numa pesquisa anterior a ela.
Mas desulpe a ignorancia, como faço para construir uma view ?

(Haroldo) #4

http://dev.mysql.com/doc/refman/5.0/en/create-view.html

(system) #5

O create view resolveria meu problema se funcionasse…
Fiz o seguinte:

drop view if exists viewPesquisa;
create view viewPesquisa as select * from tabelaPrincipal;

Para testar e ótimo no local funciona, mas qdo coloco os campos que preciso:

drop view if exists viewPesquisa;
create view viewPesquisa as select campo1, campo2, campo3… from tabelaPrincipal;

funciona em partes pois nao passa TODOS os dados da tabela mas apenas alguns, alguem tem alguma ideia do pq disto ? e no servidor fiz testes tbm, nao passa dado nenhum