视图不允许空值
View doesn't allow null value
我有一个显示多个不同对象数据的视图。
CREATE VIEW viewA AS
SELECT
fiel1, field2, field3, -- table 1
field4, field5, field6, -- table 2
field7, field8 -- table 3
FROM table1 t1
JOIN table2 t2 ON t1.t2id = t2.id
JOIN table3 t3 ON t1.t3id = t3.id
GO
我的表格如下:
CREATE TABLE table1 (
id int not null IDENTITY(1, 1),
field1 int not null IDENTITY(1, 1),
field2 int not null,
field3 int not null,
t2id int, -- foreign key, is nullable
t3id int -- foreign key, is nullable
);
CREATE TABLE table2 (
id int not null IDENTITY(1, 1),
field4 int not null,
field5 int not null,
field6 varchar not null
);
CREATE TABLE table3 (
id int not null IDENTITY(1, 1),
field7 int not null,
field8 varchar not null
);
当我用一些数据填充 table1 而 t2id 中没有任何数据时,视图没有填充数据,即使 id 本身不是必需的。当我完成字段并在 t2id 中添加一些 id 时,数据会正确显示。我尝试在 isnull(field7, null) as field7
中使用 isnull 函数,但这并没有改变任何东西。
那么,是否可以有一个显示空值的视图,即使字段本身不可为空但引用可以为空? (我也尝试使用可为空的字段,但没有用)。
您使用了 JOIN 子句。改为使用 LEFT JOIN
CREATE VIEW viewA AS
SELECT
fiel1, field2, field3, -- table 1
field4, field5, field6, -- table 2
field7, field8 -- table 3
FROM table1 t1
LEFT JOIN table2 t2 ON t1.t2id = t2.id
LEFT JOIN table3 t3 ON t1.t3id = t3.id
GO
了解更多关于 SQL 加入这里:https://www.w3schools.com/sql/sql_join.asp
我有一个显示多个不同对象数据的视图。
CREATE VIEW viewA AS
SELECT
fiel1, field2, field3, -- table 1
field4, field5, field6, -- table 2
field7, field8 -- table 3
FROM table1 t1
JOIN table2 t2 ON t1.t2id = t2.id
JOIN table3 t3 ON t1.t3id = t3.id
GO
我的表格如下:
CREATE TABLE table1 (
id int not null IDENTITY(1, 1),
field1 int not null IDENTITY(1, 1),
field2 int not null,
field3 int not null,
t2id int, -- foreign key, is nullable
t3id int -- foreign key, is nullable
);
CREATE TABLE table2 (
id int not null IDENTITY(1, 1),
field4 int not null,
field5 int not null,
field6 varchar not null
);
CREATE TABLE table3 (
id int not null IDENTITY(1, 1),
field7 int not null,
field8 varchar not null
);
当我用一些数据填充 table1 而 t2id 中没有任何数据时,视图没有填充数据,即使 id 本身不是必需的。当我完成字段并在 t2id 中添加一些 id 时,数据会正确显示。我尝试在 isnull(field7, null) as field7
中使用 isnull 函数,但这并没有改变任何东西。
那么,是否可以有一个显示空值的视图,即使字段本身不可为空但引用可以为空? (我也尝试使用可为空的字段,但没有用)。
您使用了 JOIN 子句。改为使用 LEFT JOIN
CREATE VIEW viewA AS
SELECT
fiel1, field2, field3, -- table 1
field4, field5, field6, -- table 2
field7, field8 -- table 3
FROM table1 t1
LEFT JOIN table2 t2 ON t1.t2id = t2.id
LEFT JOIN table3 t3 ON t1.t3id = t3.id
GO
了解更多关于 SQL 加入这里:https://www.w3schools.com/sql/sql_join.asp