失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > mysql查询时字段翻译_mysql-数据库问题:从表中获取默认翻译

mysql查询时字段翻译_mysql-数据库问题:从表中获取默认翻译

时间:2023-12-31 03:47:18

相关推荐

mysql查询时字段翻译_mysql-数据库问题:从表中获取默认翻译

美好的一天,

我有一个MySQL表描述,其中包含字段:lang_id,label,short_description,long_description和is_default.

在我的应用程序中,根据当前语言从数据库中获取产品描述.目前一切正常,但是我想为每种产品添加一个默认描述,以便找不到所需语言的描述,而是获取默认描述.

现在,我的要求如下所示:

SELECT

description.id AS record_id

description.label,description.short_description,description.long_description

FROM

products,description,languages

WHERE

products.id = '.$someProductID.' AND

products.id = description.product_id AND

languages.id = description.lang_id AND

languages.code = "'.$someLang.'"

在所需的翻译不存在时,没有人有解决方案来获取产品的默认描述吗?

我想在我的请求中添加一些IFNULL语句,如下所示:

IFNULL(description.label,(SELECT label FROM description WHERE product_id = '.$someProductID.' AND is_default = 1) ) AS label

但是我对这样复杂的查询不是很熟悉,我无法使其正常工作.

我愿意接受建议;)

谢谢 !

最佳答案

这个:

SELECT p.*,COALESCE (dn.name,den.name) AS cname

FROM products p

LEFT JOIN

description dn

ON dn.product_id = p.id

AND dn.language =

(

SELECT id

FROM language

WHERE code = 'your_language'

)

LEFT JOIN

description den

ON den.product_id = p.id

AND den.is_default

)

WHERE p.id = @my_product

,或这个:

SELECT p.*,(

SELECT den.name

FROM description den

WHERE den.product_id = p.id

AND den.is_default

)

) AS cname

FROM products p

LEFT JOIN

description dn

ON dn.product_id = p.id

AND dn.language =

(

SELECT id

FROM language

WHERE code = 'your_language'

)

WHERE p.id = @my_product

在除MySQL以外的所有数据库中,第一种方法在语言翻译很少时效率更高,第二种方法在翻译很多时效率更高.

在MySQL中,第二个查询(使用COALESCE)总是效率更高.

有关性能的详细信息,请参阅我的博客中有关此问题的系列文章:

> Fallback language names: Oracle

,并进一步浏览其他RDBMS的

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@,我们将及时予以处理。

如果觉得《mysql查询时字段翻译_mysql-数据库问题:从表中获取默认翻译》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。