由于 SQLite 不支持 RIGHT OUTER JOINS,我提出以下挑战(阅读:邀请为我做我的工作):
重构此查询,使其不再使用 SQLite 不支持的结构,例如 RIGHT/FULL OUTER JOIN。
SELECT strings.*, translations.text
FROM translations INNER JOIN
language ON translations.language_id = language.id RIGHT OUTER JOIN
strings ON translations.string_id = strings.id
WHERE (language.handle = 'english')
我感觉它可以通过子查询或通过旋转表并执行 LEFT OUTER JOIN 来实现,但我的尝试失败了;我的 SQL 与以前不同了。
以下是显示适用架构的查询构建器大纲:http://dl.getdropbox.com/u/264612/sql-refactor.PNG
第一个破解它的人会得到 dekz 的电子拥抱
最佳答案
以下内容未经测试。
select strings.*, translations.text
from strings left outer join translations
on translations.string_id = strings.id
and translations.language_id = (select id
from language
where language.handle = 'english')
我认为这将为您提供具有匹配翻译文本的所有字符串,其中存在合适的英文翻译。这就是你想要得到的吗?
关于sql - 重构 SQL(解决方法 RIGHT OUTER JOIN),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/494397/