首页 > 解决方案 > 3个空行表之间的SQL连接

问题描述

我需要保存短语的语言翻译。我创建了 3 个表,一个用于短语,一个用于语言,一个用于翻译,其中包含以下详细信息:

  1. 语言 - 名称和 ID。
  2. 短语 - 名称和 ID。
  3. 翻译 - id、翻译、fk_language 和 fk_phrase。

当我获得所有存在的短语以及特定语言的所有翻译时,如何创建查询。如果没有翻译,我仍然希望所有短语都在那里。网页有一个下拉菜单来选择一种语言,然后输入所有短语的翻译,然后使用一个保存按钮保存所有翻译。

谢谢。

标签: sqljoin

解决方案


你会使用left join

select p.*, t.*
from phrases p left join
     (translations t join
      languages t
      on t.fk_language = l.id and l.language = 'XXX'
     )
     on t.fk_phrase = p.id ;

FROM这是在子句中使用括号是编写查询的合理方式的有趣案例之一。


推荐阅读