Mysql
 sql >> Database >  >> RDS >> Mysql

Cosa posso fare per fare in modo che questo SQL restituisca risultati in determinate situazioni?

Devi cambiare alcuni dei tuoi AND in OR e poi tra parentesi gli OR.

In questo momento hai bisogno di uno dei $vehicle MATCH e anche di entrambi delle corrispondenze di $keyword. Invece, penso che tu voglia richiedere uno qualsiasi dei $vehicle o $corrispondenze di parole chiave.

Inoltre, penso che tu possa combinare le corrispondenze di $keyword in un'unica chiamata MATCH, vero? E penso che il controllo LIKE rispetto a T.truck_number sia ridondante dato il MATCH che include quella colonna. In tal caso potresti scrivere quella sezione dell'SQL come:

 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 includo il commento obbligatorio sulla protezione contro l'iniezione di SQL sfuggendo all'SQL dinamico che crei.