我的表tbl_settings
总是只有一条记录。并且其中包含一个字段show_messages_in_log
。另一个table tbl_logs
存储所有日志。当然,tbl_logs
有一个消息字段。
我需要一个显示日志的视图:
tbl_settings.show_messages_in_log
为真,请显示tbl_logs.message
,tbl_settings.show_messages_in_log
为false,则不显示tbl_logs.message
。任何人都可以帮助我吗?
答案 0 :(得分:1)
你做不到。在关系数据库中,关系(表,视图)总是必须有固定数量的列。
您唯一能做的就是始终拥有该列,但在视图中将其显示为NULL。为此,您需要加入两个表并在视图中使用case表达式:
case
when show_messages_in_log = 'true' then tbl_logs.message
else null
end as message
答案 1 :(得分:1)
也许只是加入表格,就像这样
create table tbl_settings
(show_messages_in_log boolean);
create table tbl_logs
(message varchar(200));
insert into tbl_logs
values ('msg1'), ('msg2');
insert into tbl_settings
values (true);
select tbl_logs.message
from tbl_logs inner join tbl_settings on tbl_settings.show_messages_in_log = TRUE
这将返回所有行。
update tbl_settings set show_messages_in_log = false;
select tbl_logs.message
from tbl_logs inner join tbl_settings on tbl_settings.show_messages_in_log = TRUE
这将不会返回任何行。
答案 2 :(得分:0)
IF tbl_settings.show_messages_in_log = TRUE THEN tbl_logs.message
ELSE NULL
END IF