sql >> Databasteknik >  >> RDS >> Mysql

Vad kan jag göra för att få denna SQL att returnera resultat i vissa situationer?

Du måste ändra några av dina OCH till ELLER och sedan placera ELLER inom parentes.

Just nu behöver du en av $vehicle MATCHerna och även båda av $sökordsmatchningarna. Istället tror jag att du vill kräva något av $vehicle or $keyword matchar.

Jag tror också att du kan kombinera $keyword-matchningarna till ett enda MATCH-anrop, eller hur? Och jag tror att LIKE-kontrollen mot T.truck_number är överflödig med tanke på MATCH som innehåller den kolumnen. I så fall kan du skriva den sektionen av SQL 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' ))

Och jag inkluderar den obligatoriska kommentaren om att skydda dig själv mot SQL-injektion genom att undkomma den dynamiska SQL du skapar.




  1. Python, MySQL och SELECT utdata till ordbok med kolumnnamn för nycklar

  2. förvalda värden för en dynamisk listruta med flera värden

  3. Icke-primära främmande nycklar i Django

  4. MySQL får rekordantal per timme, även timmar utan rekord