sql >> Base de Datos >  >> RDS >> Mysql

¿Qué puedo hacer para que este SQL devuelva resultados en ciertas situaciones?

Debe cambiar algunos de sus AND a OR y luego poner entre paréntesis los OR.

En este momento necesita uno de los $vehicle MATCHes y también ambos de las coincidencias de $palabra clave. En cambio, creo que desea solicitar cualquiera de los $vehículo o $coincidencias de palabra clave.

Además, creo que puede combinar las coincidencias de $keyword en una sola llamada MATCH, ¿no? Y creo que la verificación LIKE contra T.truck_number es redundante dado el MATCH que incluye esa columna. En cuyo caso, podría escribir esa sección del 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 incluyo el comentario obligatorio sobre cómo protegerse contra la inyección de SQL escapando del SQL dinámico que crea.