Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apa yang dapat saya lakukan untuk membuat SQL ini mengembalikan hasil dalam situasi tertentu?

Anda perlu mengubah beberapa AND menjadi OR, lalu mengkurung OR.

Saat ini Anda memerlukan salah satu dari $vehicle MATCH dan juga keduanya dari $keyword yang cocok. Sebaliknya, saya pikir Anda ingin meminta salah satu dari $vehicle atau $kecocokan kata kunci.

Juga, saya pikir Anda dapat menggabungkan kecocokan $keyword menjadi satu panggilan MATCH, bukan? Dan saya pikir pemeriksaan LIKE terhadap T.truck_number berlebihan mengingat MATCH yang menyertakan kolom itu. Dalam hal ini Anda dapat menulis bagian SQL tersebut sebagai:

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

Dan saya menyertakan komentar wajib tentang melindungi diri Anda dari injeksi SQL dengan keluar dari SQL dinamis yang Anda buat.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buat kueri untuk mendapatkan jumlah panggilan yang belum selesai

  2. Menyinkronkan Access DB dan MySQL

  3. Tetapkan prioritas antara proses mysql

  4. Python MySQLdb beralih melalui tabel

  5. Bagaimana mencegah pembuatan catatan di mana nilai dua bidang sama?