我有两张table:一张是餐馆的,里面有基本的信息,另一张是描述翻译。第二个表包含以下列: restaurant_id
, description
, language
客户机应用程序请求餐馆列表,并传递它想要结果的语言。所以现在我需要把这两个表连接起来。如果每家餐厅都有可用语言的描述,一切都会很容易,但事实并非如此。一些餐馆缺少一些语言的描述。
因此,如果在所选语言中缺少描述,我应该返回一个默认语言的描述(顺其自然) eng
例如)。
所以问题是,如果所选语言中的描述可用,我如何以这种方式连接表-与之连接,否则-与之连接 eng
?
2条答案
按热度按时间svmlkihl1#
另一种解决方案是使用临时表选择具有翻译的餐厅的ID,然后使用union将具有翻译的餐厅+所有默认餐厅(不包括具有翻译的餐厅ID)组合在一起:
创建ID为的临时表:
选择具有转换的行:
具有默认转换(不包括临时表中的ID)的行的并集:
演示:http://sqlfiddle.com/#!9/d3e66dc/1号
p3rjfoxz2#
您所能做的是用所选的语言左键联接到翻译表上,也可以用默认语言再次内部联接到翻译表上。
那你可以用
COALESCE
选择第一个非空值。例如演示~http://sqlfiddle.com/#!9/aa68c0/1号
我用过
INNER JOIN
以确保有值可显示。如果你对一个可能的NULL
结果,将其更改为LEFT JOIN
.