14

私は次の参加を持っています

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

@SynonymTable テーブル変数には、(必要に応じて) 次のような項目用語のリストが含まれます。

%shirt%
%blouse%
%petticoat%

これらはすべて、「シャツ」という用語など、特定のキーワード検索の同義語のリストに基づいています。このリストから、関連する可能性のあるすべてのアイテムを見つけることができます。問題は、キーワードが指定されていない場合です。クエリは明らかに何も結合しません。

シノニムテーブルにアイテムがない場合、結合を排除するか、すべてのアイテムを返す方法はありますか?

Bypass last INNER JOIN in queryなどの投稿を見つけましたが、シナリオで機能させることができませんか?

どんな助けやアドバイスも素晴らしいでしょう。

4

3 に答える 3

7

次のように 1 つの選択を使用できます。

SELECT * FROM Products 
LEFT JOIN @SynonymTable AS A ON ([Products].[Title] LIKE A.[Synonym])
WHERE A.[Synonym] IS NOT NULL 
      OR NOT EXISTS (SELECT B.[Synonym] FROM @SynonymTable B)
于 2013-01-03T14:45:43.590 に答える