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

Hvad kan jeg gøre for at få denne SQL til at returnere resultater i visse situationer?

Du skal ændre nogle af dine OG'er til OR'er og derefter sætte OR'erne i parentes.

Lige nu har du brug for en af ​​$vehicle MATCH'erne og også begge af $søgeord-matchene. I stedet tror jeg, du vil kræve et hvilket som helst af $vehicle or $søgeord matcher.

Jeg tror også, at du kan kombinere $keyword-matches til et enkelt MATCH-kald, ikke? Og jeg tror, ​​at LIKE-tjekket mod T.truck_number er overflødigt givet MATCH, der inkluderer den kolonne. I så fald kan du skrive den del af SQL'en som:

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' ))

Og jeg inkluderer den obligatoriske kommentar om at beskytte dig selv mod SQL-injektion ved at undslippe den dynamiske SQL, du opretter.




  1. Devart dotConnect til Oracle i Visual Studio 2015 - kompatibilitetsproblemer

  2. Udløser til opdatering af forældrekolonne baseret på antal underordnede tabel

  3. Behov for at indsætte poster til oracle-tabellen til planlægning

  4. Sådan konverteres tidszonen i MySQL