Je suis encore une fois en difficulté avec SQL avec ma fonction de recherche.Algorithme SQL Problème - pour ajouter et filtrer les résultats de la boucle
Fondamentalement, je veux un proc stocké qui sépare une chaîne en mots puis pour chaque mot que je veux vérifier en utilisant la recherche de texte intégral si elle est dans l'un des 2 tableaux.
Si les résultats sont trouvés dans ces tableaux, il convient de les ajouter aux résultats trouvés pour les autres mots et de retourner un jeu où l'enregistrement se trouve dans ces deux ensembles.
Voici donc mon algorithme
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
Je ne sais pas où commencer et je l'ai recherché Google pour les âges, mais d'être un débutant dans SQL je manquerai certains termes.
Aussi est-ce la meilleure façon de faire ce genre de chose?
Appréciez toute aide.
Editer: Juste pour donner plus d'informations. La ville, le code postal et le nom sont tous des champs nvarchar dans une table Restaurants. Cuisine nom est dans une table différente et est liée par une autre table aux restaurants comme un restaurant peut servir de nombreux types de cuisine.
Tous ces champs ont l'indexation complète de recherche de texte.
Vous voulez "AND" ou "OR"? Vous indiquez «ET», mais cela voudrait dire que le mot recherché devrait être dans les champs restaurant, cuisine, ville et code postal. Donc, pour tous ces restaurants nommés "21201" dans "21201", MD (code postal "21201") qui servent "21201" pour le dîner, ce serait juste sur ... – GalacticCowboy
vous n'avez pas vraiment besoin de fulltext pour les codes postaux et Tout simplement vieux index va fonctionner. De plus, vous utilisez du fulltext pour quelque chose pour lequel il n'a pas été conçu, il a été conçu pour indexer de gros morceaux de texte, pas pour 2,3 mots. –
Je veux d'abord vérifier si le mot est dans le nom du restaurant ou de la cuisine (comme un restaurant peut être appelé meilleur chinois par exemple) et si aucun match je veux vérifier si le mot est en ville, si toujours pas de match je veux vérifier si c'est dans le code postal. Ainsi, les résultats sont filtrés lorsque l'utilisateur tape des mots dans une zone de texte. – ddd