Ignorer SQL INNER JOIN si il n'y a pas les rejoindre?

J'ai la Jointure suivante

INNER JOIN @SynonymTable AS A ON ([Products].[Title] LIKE A.[Synonym])

L' @SynonymTable table variable contient (si nécessaire) une liste des éléments de termes tels que:

%shirt%
%blouse%
%petticoat%

Ils sont tous basés sur une liste de synonymes pour un mot clé de recherche, tels que le terme de 'chemise' - à partir de ce que je peux ensuite trouver tous les éléments qui peuvent être liées, etc. Le problème est que si il n'y a pas de mot-clé fourni la requête n'est évidemment pas adhérer à quoi que ce soit.

Est-il de toute façon à éliminer les rejoindre ou à nous retourner tous les articles si il n'y a pas d'éléments dans la table synonyme?

J'ai trouvé un poste comme Contournement de la dernière JOINTURE INTERNE dans la requête mais je suis incapable de faire fonctionner mon scénario?

De l'aide ou des conseils seraient les grands.

Je ne pourrais pas obtenu le point, mais pourquoi ne pas utiliser une jointure externe gauche?
puis le mauvais produits seront retournés si le tableau est rempli
Je pense que @Mithrandir a raison: à l'aide d'une JOINTURE GAUCHE, il sera de retour tous les enregistrement correspondant à un "Synonyme" et aussi le non enregistrement correspondant à joindre le champ NULL
left join vous donnera tous les enregistrements de produits et si il y a un enregistrement dans des synonymes, il vous donnera les informations de 2 ou plusieurs lignes.
Pouvez-vous vérifier le @SynonymTable avant l'exécution de la requête pour voir si il y a un enregistrement, et si non, puis insérez % dans ce si la requête ne retourne tout?

OriginalL'auteur Nathan | 2013-01-03