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.
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
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser la sélection comme ceci:
OriginalL'auteur András Ottó
Utiliser deux requêtes différentes, vérifiez si
synonymtable
a des lignes et exécuter la requête avecinner join
else return lignes deproducts
tableIF EXISTS (SELECT 1 FROM @SynonymTable)
serait plus efficace.OriginalL'auteur rs.
une solution serait de ne pas se joindre à la table synonyme mais de l'utiliser dans une clause where
pas le plus élégant de code, mais devrait fonctionner (sauf si vous avez une grande synonyme table, puis il devient plus lent)
OriginalL'auteur ufosnowcat