如何在IF语句成功/错误情况

时间:2016-01-13 08:50:52

标签: mysql

我有两张桌子。  新闻:ID,主题,作者,出版商  区域设置: news_id,lang_id,name 表格新闻与区域设置一对多关系。

在我的网站上,   如果新语言被激活,那么我需要添加激活的语言变量(从相应的新的默认lang值中获取值)到表语言环境   如果停用新语言,那么我需要从表语言环境中删除激活的语言变量 此过程与新闻表中的所有条目相同。

例如: -  表 - 新闻:  
 id主题作者出版人
 1个样本1 author1 publisher1
 2 sample2 author2 publisher2

 表 - 区域设置:
 news_id lang_id名称
 1 1 news1 - 德语
 1 2 news1 - 英语
 1 3 news1 - 法国
 2 1 news2 - 德语
 2 2 news2 - english
 2 3 news2 - 法语

如果我激活'italian'lang,我需要添加以下条目:
   news_id => 1 lang_id => 4 name => news1 - 意大利语    news_id => 2 lang_id => 4 name => news2 - 意大利语

如果我停用'english'lang,我需要删除以下条目:
   news_id => 1 lang_id => 2 name => news1 - 英语
   news_id => 2 lang_id => 2 name => news2 - english

我需要使用MYSQL(单个查询)来完成此过程。

1 个答案:

答案 0 :(得分:0)

查询语言激活:

INSERT IGNORE INTO 
                            `locale` 
                            (   `news_id`, 
                                `lang_id`, 
                                `name`
                            )
                        SELECT * FROM 
                            (SELECT `news_id`, 
                                    ' . $activatedLangId . ',
                                    `name` 
                                FROM `locale` 
                                WHERE lang_id = ' . $defaultLangId . '
                            ) as tmp

查询语言停用:

DELETE FROM `locale` WHERE lang_id = ' . $deactivatedLangId

注意:在语言环境表中,news_id和lang_id被编入索引。