私は、文字のセットを受け入れ、それが作成できるすべての可能な単語を返すSQLを作成しようとしています。私の最初の考えは、次のような基本的な3つのテーブルデータベースを作成することでした。
Words -- contains 200k words in real life
------
1 | act
2 | cat
Letters -- contains the whole alphabet in real life
--------
1 | a
3 | c
20 | t
WordLetters --First column is the WordId and the second column is the LetterId
------------
1 | 1
1 | 3
1 | 20
2 | 3
2 | 1
2 | 20
しかし、渡されたすべての文字に対してWordLettersにエントリがある単語を返すクエリを作成する方法に少し固執しています。また、同じ文字が2つある単語も考慮する必要があります。私はこのクエリから始めましたが、明らかに機能しません:
SELECT DISTINCT w.Word
FROM Words w
INNER JOIN WordLetters wl
ON wl.LetterId = 20 AND wl.LetterId = 3 AND wl.LetterId = 1
渡されたすべての文字を含み、重複した文字を考慮した単語のみを返すクエリを作成するにはどうすればよいですか?
他の情報:
私のWordテーブルには200,000近くの単語が含まれているため、コードではなくデータベース側でこれを実行しようとしています。誰かが気にかけているなら、私はenable1単語リストを使用しています。