gpt4 book ai didi

mysql - 多语言数据库 - 获取所有语言的帖子

转载 作者:行者123 更新时间:2023-11-29 07:55:40 29 4
gpt4 key购买 nike

我想编写一个应用程序,将多语言数据存储在数据库中。有些帖子具有唯一的 ID,并且是用多种语言编写的(至少 2 种语言,可能会添加其他语言)。我已经浏览了 stackoverflow 的几篇文章,找到了这些几乎令人满意的答案:
Multi-language Category Titles in Mysql Database
What's the best database structure to keep multilingual data?
Schema for a multilanguage database

他们都建议放 3 张这样的 table :

[ languages ]
id (INT)
name (VARCHAR)

[ products ]
id (INT)
price (DECIMAL)

[ translation ]
id (INT, PK)
model (VARCHAR) // product
field (VARCHAR) // name
language_id (INT, FK)
text (VARCHAR)

(这来自上面的链接之一)

我同意这个解决方案,但我希望应用程序显示帖子所用的所有可能的语言。我已经考虑过阅读帖子的所有翻译并仅使用一种语言来创建页面,但使用另一种翻译以显示其他可能的语言。我不喜欢这个想法,因为这样我会从数据库中检索太多未使用的数据(因为我检索了许多翻译,但只使用了一个)。
我还想过检索所有可能的翻译并将它们存储在页面中(例如在 javascript 代码中、数据属性中等),但这会使页面变慢,因为我认为大多数用户只想查看帖子仅使用一种语言。
所以我猜应用程序必须执行 2 个查询:一个用于获取翻译,另一个用于获取帖子的所有语言。但我认为有一种方法可以将其放入一个查询中,但我不知道如何做到这一点。

是否有一种简单的方法可以通过单个查询来阅读某种语言的翻译(由用户或默认给出,可能只是第一个数据库条目)以及帖子所用的所有其他语言?

提前致谢。

最佳答案

我建议您使用两个查询以获得更高的灵 active 。

您还可以使用一个查询 - 例如获取字符串中用“,”分隔的语言:

SELECT t.*,
(SELECT GROUP_CONCAT(l1.name SEPARATOR ',')
FROM translation t1
JOIN languages l1 ON l1.id = t1.language_id
WHERE t1.product_id = t.product_id
GROUP BY t1.product_id
) AS lang_names
FROM translation t
-- there put required JOIN-s --
WHERE t.id = ?

其中:? 是您希望显示的翻译 ID 的占位符。我假设 translation 表中有 product_id 字段。

关于mysql - 多语言数据库 - 获取所有语言的帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25227468/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com