sql - 重构 SQL(解决方法 RIGHT OUTER JOIN)

标签 sql sqlite refactoring outer-join

由于 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/

相关文章:

sql - 删除这些该死的 NULL

java - 如何在数据库列中存储多个项目?

当引用的项目需要时,SQLite.Interop.dll 文件不会复制到项目输出路径

PHP 测试 JSON 包含 SQLite

JavaScript 揭示模块模式重构建议

c - 如何自动重构 C for 循环

php - 2 mysql查询中的where语句

android - 使用 Sqlite 将数据从 Edittext 输入填充到 Spinner Display

java - 通过重构简化代码

c# - 如何搜索SQL数据库并在C# ListView 中显示