Ich bin auf der Suche nach einer Möglichkeit, mehrere Spalten in einer SQL-Tabelle mit mehreren Schlüsselwörtern mit Coldfusion zu suchen. Ich habe derzeit den folgenden Code, der halb funktioniert.SQL Query - Mehrere Schlüsselwörter suchen Multi Spalten
<cfquery name="rsSearchEmployees" datasource="#request.database#">
SELECT idn, firstname, lastname
FROM Employees
WHERE (<cfloop list="#arguments.nameSearchString#" delimiters=" " index="word">firstname LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#Trim(word)#%" /> OR </cfloop> (1 <> 1))
OR (<cfloop list="#arguments.nameSearchString#" delimiters=" " index="word">lastname LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#Trim(word)#%" /> OR </cfloop> (1 <> 1))
ORDER BY firstname ASC
Es sucht 2 Spalten, Vorname und Nachname mit Keywords in ein Textfeld eingegeben. Die Schlüsselwörter werden mit dem Tag cfloop zerlegt.
Dieser Code führt zwar zu Ergebnissen, entfernt jedoch derzeit keine Ergebnisse, wenn 2 oder mehr Schlüsselwörter in einer oder beiden Spalten nicht gefunden werden.
Zum Beispiel, ich wollte nach Steve Smith suchen, wenn ich Steve eintippe, zeigt es die Zeile für Steve. Dasselbe passiert für Smith. Wenn ich Steve Smith eintippe, zeigt es immer noch die Zeile an, die korrekt ist.
Es geht schief, wenn ich etwas wie Steve Jobs eintippe. Wenn er dies eingibt, zeigt er immer noch Steve Smith, wenn er es nicht tun sollte. Hat jemand eine Ahnung, wie man das schafft?
Vielen Dank für jede Hilfe im Voraus. Chris
Gibt es einen Grund, warum Sie Ihr 'OR' in der' WHERE' -Klausel nicht zu einem 'AND' ändern können? – JNK
Welches Ergebnis willst du für "Smith steve"? –
Ich kann die Bedingungen ändern, versuchte alle verschiedenen Variationen, aber alle liefern nicht die richtigen Ergebnisse. Mit Steve Smith will ich, dass es das Ergebnis zeigt, ich will nicht, dass es ein Ergebnis für Steve Jobs zeigt. Danke – Chris