Mysql
 sql >> база данни >  >> RDS >> Mysql

Какво мога да направя, за да накарам този SQL резултат да връща в определени ситуации?

Трябва да промените някои от вашите И на ИЛИ и след това да поставите ИЛИ в скоби.

В момента ви трябва едно от $vehicle MATCH, а също и и двете от съвпаденията на $keyword. Вместо това мисля, че искате да изисквате някое от $vehicle or $keyword съвпада.

Освен това мисля, че можете да комбинирате съвпаденията на $keyword в едно извикване на MATCH, нали? И мисля, че проверката на LIKE срещу T.truck_number е излишна, като се има предвид MATCH, който включва тази колона. В който случай можете да напишете този раздел от SQL като:

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

Включвам и задължителния коментар за защита срещу SQL инжектиране чрез избягване на динамичния SQL, който създавате.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Има ли възможност ANY_VALUE за mysql 5.6?

  2. Не можете да стартирате Insert и Select LAST_INSERT_ID() в една и съща заявка?

  3. Изпуснах таблицата general_log, как да я създам отново?

  4. защо трябва да използвам mb_convert_encoding($name,'ISO-8859-15','utf-8'), за да показвам символи с акцент?

  5. MySQL Trigger за вмъкване на данни в различна DB