J'ai eu une requête FREETEXTTABLE en cours de recherche qui a recherché un @searchString. J'ai maintenant besoin de UNION avec une autre requête simple qui essaye d'analyser le @searchString dans un INT, et si cela réussit, de filtrer la table en cherchant la ligne avec PK égale à l'analyse @searchString.Commande du résultat FREETEXTTABLE RACCORDÉ avec la norme SELECT par rang
Auparavant, je pouvais facilement JOINDRE le résultat FREETEXTTABLE à la table qu'il cherchait, classer par rang, mais seulement CHOISIR les colonnes de la table d'origine qui a été recherchée. Maintenant que je combine les résultats uniques entre la requête de recherche de texte et la requête recherchant la ligne avec la chaîne de recherche comme clé, je n'ai plus accès au classement de la requête de recherche de texte.
Comment puis-je gérer la classification par rang de la recherche en texte intégral, mais placer le résultat de la recherche à la recherche de la ligne avec la clé primaire (si elle a un résultat) AVANT les résultats de recherche en texte intégral?
Je peux voir la validité de votre réponse-- tirant la jointure loin de l'appel à l'aide et FREETEXTTABLE * après * l'UNION. Malheureusement, je n'arrive pas à l'obtenir pour analyser le SQL. Il me donne des problèmes avec l'utilisation de «Rank» et «Key». De même, si @searchString n'est pas un nombre entier valide, CAST déclenchera-t-il une exception? À l'origine, j'avais un bloc TRY CATCH pour définir une valeur en fonction du succès de l'appel de conversion. Si la distribution échoue gracieusement alors je peux simplement sauter ça. – Brandon
vous pourriez envelopper cette 2ème partie de l'union avec une déclaration de cas - je mettrai à jour l'exemple pour refléter cela. Quant à ne pas analyser la requête - je ne suis pas sûr de ce qui causerait vos problèmes là ... –
J'ai eu les mêmes problèmes d'analyse en cours d'exécution d'une requête de test. On dirait qu'il faut juste que les colonnes KEY & RANK soient accolées. –