我的数据库中有 27 个表。1个单词表(拼字游戏单词表),26个关联表。
Table Fields
================
word [id,word]
a [word_id]
b [word_id]
...
z [word_id]
我试图找出给定字符串的匹配单词。
例如,如果给定的字符串是pant
,我想知道:pant, apt, pat, tap, ant, tan, nap, pan, at, ta, pa, an, na
。
我目前的策略是分解字符串中的每个字母并找到与所有字母匹配的相关单词。
例如:
SELECT word.word
FROM word, p, a, n, t
WHERE
word.id = p.word_id OR
word.id = a.word_id OR
word.id = n.word_id OR
word.id = t.word_id
但这最终会打印出所有包含 ap、a、n 或 t 的单词。
如果我将所有运算符切换到AND
,我只会遇到一场比赛:pant
.
你能帮我解开这个谜吗?
我还关心如何处理字符串中的重复字母。例如,PPANT
应该找到匹配的app
,而普通的PANT
不应该。
我在关联表的正确轨道上还是有更好的方法?
我试图在 php/mysql 中相当有效地处理这个问题。我知道之前有其他人在 C、perl、java 等语言中解决了这个谜题。