加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

mysql-数据库题目:从表中获取默认翻译

发布时间:2021-01-18 12:49:41 所属栏目:编程 来源:网络整理
导读:柔美的一天, 我有一个MySQL表描写,个中包括字段:lang_id,label,short_description,long_description和is_default. 在我的应用措施中,按照当前说话从数据库中获取产物描写.今朝统统正常,可是我想为每种产物添加一个默认描写,以便找不到所需说话的描写,而是获

柔美的一天,

我有一个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的

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读