Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was kann ich tun, damit diese SQL in bestimmten Situationen Ergebnisse zurückgibt?

Sie müssen einige Ihrer UNDs in ODERs ändern und dann die ODERs in Klammern setzen.

Im Moment benötigen Sie eines der $vehicle MATCHes und auch beide der $keyword-Übereinstimmungen. Stattdessen denke ich, dass Sie eines der $vehicle oder benötigen $Keyword-Übereinstimmungen.

Ich denke auch, dass Sie die $keyword-Übereinstimmungen in einem einzigen MATCH-Aufruf kombinieren können, nicht wahr? Und ich denke, dass die LIKE-Prüfung gegen T.truck_number angesichts der Übereinstimmung, die diese Spalte enthält, überflüssig ist. In diesem Fall könnten Sie diesen Abschnitt der SQL schreiben als:

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

Und ich füge den obligatorischen Kommentar zum Schutz vor SQL-Injection ein, indem Sie das von Ihnen erstellte dynamische SQL maskieren.