带有IF语句的MySQL VIEW

时间:2012-10-21 18:06:10

标签: mysql view if-statement

我在mMySQL中有两个表:

 - news (news_id, news_titel, news_file_id)
 - files (file_id, file_path, file_name)

我想用这些列创建MySQL VIEW:

- news_view (news_id, news_title, news_file_id, news_file_path)

但是,如果news_file_id > 0那么,我得到文件的路径(file_path + file_name),否则news_file_path应该是0

我该怎么做VIEW?

修改

但如果我想再添加两个表怎么办:

categories (category_id, category_name)
users(user_id, user_name)

并将表格news更改为

news (news_id, news_title, news_file_id, news_author_id, news_category_id)

和视图应仅显示指定news_author_idnews_category_idnews_file_path的帖子,如原始问题中所示?

谢谢, 保罗。

2 个答案:

答案 0 :(得分:5)

尝试以下:

 CREATE VIEW news_view  
   as (SELECT news_id, news_titel, news_file_id, 
       IF(news_file_id > 0, CONCAT(file_path, file_name), 0)
           AS news_file_path
       FROM news a LEFT JOIN files b
            ON a.news_file_id= b.file_id
         JOIN categories cat
            ON a.news_category_id = cat.category_id
         JOIN users u
            ON a.news_author_id = u.user_id
      );

根据需要添加where条件。

答案 1 :(得分:3)

试试这个,您可以使用CASE作为您的条件,

CREATE VIEW myView
AS
SELECT  a.news_id, a.news_title,
        a.news_file_id,
        CASE 
            WHEN news_file_id = 0 THEN 0
            ELSE CONCAT(file_path, file_name)
        END news_file_path
FROM    news a
        LEFT JOIN files b
            ON a.news_file_id = b.file_id