Ich habe wieder mit SQL mit meiner Suchfunktion zu kämpfen.SQL-Algorithmus Trouble-for-Schleife zum Hinzufügen und Filtern von Ergebnissen
Grundsätzlich möchte ich eine gespeicherte Prozedur, die eine Zeichenfolge in Wörter aufteilt dann für jedes Wort, das ich überprüfen möchte mit Volltextsuche, wenn es in einer von 2 Tabellen ist.
Wenn Ergebnisse in diesen Tabellen gefunden werden, sollten sie sie zu allen Ergebnissen hinzufügen, die für die anderen Wörter gefunden wurden, und eine Menge zurückgeben, in der sich der Datensatz in diesen beiden Sätzen befindet.
So, hier ist mein Algorithmus
if null return all restaurants
declare results = empty
for each word
if in restaurant.name or cuisine.name
addRowsToResults
else if in restaurant.city
addRowsToResults
else if in restaurant.postcode
addRowsToResults
addRowsToResults
results = (results + new results) where a match is in both
Ich habe keine Ahnung, wo damit zu beginnen, und ich habe Google für Alter gesucht, aber ein begginer in SQL wobei ich einige Begriffe fehlen.
Ist dies auch der beste Weg, um so etwas zu tun?
Schätzen Sie jede Hilfe.
Bearbeiten: Nur um mehr Informationen zu geben. Stadt, Postleitzahl und Name sind alle nvarchar Felder in einem Restauranttabelle. Name der Küche ist in einer anderen Tabelle und ist durch einen anderen Tisch mit Restaurants verbunden, da ein Restaurant viele Arten von Küche servieren kann.
Alle diese Felder verfügen über eine Volltextsuche.
Sie wollen "UND" oder "ODER"? Sie geben "UND" an, aber das würde bedeuten, dass das Suchwort in den Feldern Restaurant, Küche, Stadt und Postleitzahl stehen müsste. Also für alle diese Restaurants namens "21201" in "21201", MD (Postleitzahl "21201"), die "21201" zum Abendessen servieren, wäre das genau richtig ... – GalacticCowboy
Sie brauchen nicht wirklich Volltext für Postleitzahlen und einfacher alter Index wird funktionieren. Außerdem verwenden Sie Volltext für etwas, für das es nicht vorgesehen war. Es wurde entwickelt, um große Textabschnitte zu indizieren, nicht für 2,3 Wörter. –
Ich möchte zuerst überprüfen, ob das Wort im Restaurantnamen oder in der Küche ist (so heißt das Restaurant zum Beispiel Best Chinese). Wenn kein Match vorhanden ist, möchte ich überprüfen, ob das Wort in der Stadt ist wenn es in der Postleitzahl ist. Dies ist so die Ergebnisse gefiltert werden, wie der Benutzer Wörter in ein Textfeld eingibt. – ddd