我在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_id
,news_category_id
但news_file_path
的帖子,如原始问题中所示?
谢谢, 保罗。
答案 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