Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O que posso fazer para que esse SQL retorne resultados em determinadas situações?


Você precisa alterar alguns de seus ANDs para ORs e, em seguida, colocar os ORs entre parênteses.

No momento, você precisa de uma das $vehicle MATCHes e também ambas das correspondências de $palavra-chave. Em vez disso, acho que você deseja exigir qualquer um dos $vehicle ou $palavra-chave corresponde.

Além disso, acho que você pode combinar as correspondências $keyword em uma única chamada MATCH, não é? E eu acho que a verificação LIKE contra T.truck_number é redundante, dado o MATCH que inclui essa coluna. Nesse caso, você poderia escrever essa seção do SQL como:
 AND (MATCH( T.truck_number, T.make, T.model, T.engine, T.vin_number,
      T.transmission_number, T.comments) AGAINST( '$vehicle' )
     OR MATCH( P.part_num, P.part_desc, P.part_ref,M.comments, M.work_done) 
     AGAINST( '$keywords' ))

E incluo o comentário obrigatório sobre como se proteger contra injeção de SQL escapando do SQL dinâmico que você cria.