mysql 加入语言环境或任何其他翻译 table
mysql join translations table on locale or any other
我正在创建一个包含不同语言产品的网站。我想从我的数据库中获取带有产品名称的产品列表。但是,产品名称在 translations
table 中,并非每个产品都有每种语言的翻译。
这是数据库的样子:
+-----------+ +---------------+ +-----------+
| Products | | Translations | | Languages |
+-----------+ +---------------+ +-----------+
| id | | product_id | | code |
| ... | | language_code | | ... |
+-----------+ | value | +-----------+
+---------------+
我想做的是让所有产品都带有他们的名字。该名称应该在用户区域设置中,如果这不可用,它应该是英文的,如果这不可用,它应该在任何可用的区域设置中。
我目前正在使用此代码,但如果当前语言环境中没有名称,它只是 returns null
.
SELECT p.*, t.value
FROM Products p
INNER JOIN Translations t ON t.product_id = id
WHERE t.language_code = {{ locale }}
ORDER BY t.value
mysql 中是否有函数可用于定义应搜索的区域设置顺序?问题是我的结果集中每个产品只需要一行。
感谢您的帮助。
您可以使用两个 LEFT JOIN
,仅当第一个值不可用时才默认为英语:
SELECT p.*, COALESCE(t.value, teng.value) as value
FROM Products p LEFT JOIN
Translations t
ON t.product_id = p.id AND
t.language_code = {{ locale }} LEFT JOIN
Translations teng
ON teng.product_id = p.id AND
teng.language_code = 'EN'
ORDER BY value;
请注意,语言条件需要放在 ON
子句中,而不是 WHERE
子句中。
我正在创建一个包含不同语言产品的网站。我想从我的数据库中获取带有产品名称的产品列表。但是,产品名称在 translations
table 中,并非每个产品都有每种语言的翻译。
这是数据库的样子:
+-----------+ +---------------+ +-----------+
| Products | | Translations | | Languages |
+-----------+ +---------------+ +-----------+
| id | | product_id | | code |
| ... | | language_code | | ... |
+-----------+ | value | +-----------+
+---------------+
我想做的是让所有产品都带有他们的名字。该名称应该在用户区域设置中,如果这不可用,它应该是英文的,如果这不可用,它应该在任何可用的区域设置中。
我目前正在使用此代码,但如果当前语言环境中没有名称,它只是 returns null
.
SELECT p.*, t.value
FROM Products p
INNER JOIN Translations t ON t.product_id = id
WHERE t.language_code = {{ locale }}
ORDER BY t.value
mysql 中是否有函数可用于定义应搜索的区域设置顺序?问题是我的结果集中每个产品只需要一行。
感谢您的帮助。
您可以使用两个 LEFT JOIN
,仅当第一个值不可用时才默认为英语:
SELECT p.*, COALESCE(t.value, teng.value) as value
FROM Products p LEFT JOIN
Translations t
ON t.product_id = p.id AND
t.language_code = {{ locale }} LEFT JOIN
Translations teng
ON teng.product_id = p.id AND
teng.language_code = 'EN'
ORDER BY value;
请注意,语言条件需要放在 ON
子句中,而不是 WHERE
子句中。