[Cascavel-pm] DBIX::Class Dúvida sobre operadores AND/OR

Merlin, the Mage merlin em camelot.co.pt
Quarta Julho 16 10:28:37 PDT 2008


On Wednesday 16 July 2008 16:50:49 Márcio Vitor wrote:
> Hello mongers
> Estou com uma dúvida ao fazer um search com o dbix-class que é a seguinte:
> Estou fazendo uma busca no banco de dados onde repasso a seguinte
> estrutura de dados para o search:
> my $search_fields	= [
> 							{
> 								'nome' => [
> 													{
> 													'-like' => '%uma%'
> 													},
> 													{
> 													'-like' => '%banda%'
> 													},
> 													{
> 													'-like' => '%diferente%'
> 													}
> 												],
> 								'processo_id' => '3256221'
> 							}
> 						];
>
> my $search_results =
> [$c->model('DB')->resultset('Produto')->search(\$search_fields,{rows
> => 10,page => $page})];
>
> Isto reproduz uma query  com o seguinte 'WHERE':
> WHERE ( ( ( ( nome LIKE ? ) OR ( nome LIKE ? ) OR ( nome LIKE ? ) )
> AND processo_id = ? ) )
>
> Só que na verdade ao invés de usar o operador 'OR' eu quero usar o 'AND'.
> Acredito que seja simples resolver isto, mas não encontrei material
> dizendo específicamente sobre estes operadores, qualquer material para
> leitura também é bem vindo.
>
> Obrigado
> Márcio Vitor
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm

oix,

	Não comentando o DBIx e afins... mas uma query deste tipo não deveria ser 
feito com o Match? Do genero:

	WHERE MATCH(nome) AGAINST(uma banda diferente)

	Nota: como o "uma" só tem três letras não é indexado, e consequêntemente 
ignorado no MATCH, mas a query é bem mais rápida, e acredito que um uma 
também não é muito relevante.

mpneves
-- 
http://www.avidmind.net
http://www.webaserio.com
http://www.sites-favoritos.com


Mais detalhes sobre a lista de discussão Cascavel-pm