首页 > 解决方案 > 查询及物词翻译

问题描述

我在构建我猜应该是 CTE 查询时遇到了麻烦,它会返回一个单词翻译。

我有两张桌子 - 单词:

ID | WORD | LANG
1   'Cat'   'ENG'
2   'Kot'   'POL'
3   'Katze' 'GER'

和连接:

ID | WORD_A | WORD_B
1       1         2
2       1         3

由于已经存在 ENG->POL 和 ENG->GER 翻译,我希望收到 POL->GER 翻译。

所以对于任何给定的单词,我必须检查它的连接翻译,如果目标语言不存在,我应该检查这些连接翻译的连接翻译等,直到找到任何一个翻译,或者什么都不返回;

我不知道从哪里开始,如果需要恒定数量的转换不会有问题,但它也可能需要像 POL->ITA->...->ENG->GER 这样的转换。

标签: sqlsqlite

解决方案


我建议将您的表格设计更改为以下内容:

ID | WORD_ID | WORD    | LANG
1  | 1       | 'Cat'   | 'ENG'
2  | 1       | 'Kot'   | 'POL'
3  | 1       | 'Katze' | 'GER'

现在假设您想从波兰语转到德语,并且从波兰语单词 cat 开始Kot。然后,您可以使用以下查询:

SELECT t2.WORD
FROM yourTable t1
INNER JOIN yourTable t2
    ON t1.WORD_ID = t1.WORD_ID AND t2.LANG = 'GER'
WHERE
    t1.WORD = 'Kot' AND t1.LANG = 'POL'

演示

这里的想法是您希望您的一个表维护每个逻辑上不同的单词到某个公共 id 或引用的映射。然后,您只需要输入的单词和语言以及所需的输出语言即可进行映射。

注意:为简单起见,我只展示了一个包含多种语言的单个单词的表格,但逻辑仍应适用于多种单词和语言。您当前的表格可能未标准化,但优化这可能是与您的直接问题不同的另一项任务。


推荐阅读