Sql server 如何在单元格为空时显示数据库记录
我再次来到这里,就我创建的视图的问题寻求帮助。 在我的tblEvents上有8条记录,但我创建了视图,它只显示3条记录。我怀疑视图没有从我的tblEvents中读取空值。我该如何解决这个问题Sql server 如何在单元格为空时显示数据库记录,sql-server,tsql,Sql Server,Tsql,我再次来到这里,就我创建的视图的问题寻求帮助。 在我的tblEvents上有8条记录,但我创建了视图,它只显示3条记录。我怀疑视图没有从我的tblEvents中读取空值。我该如何解决这个问题 我假设如果记录没有被编辑,那么您希望加入AddedBy列。见下文: SELECT u.UserID, u.UserFirstName + ' UserLastName' AS Author, u.UserLastName, u.UserEmailAddress,
我假设如果记录没有被编辑,那么您希望加入
AddedBy
列。见下文:
SELECT
u.UserID,
u.UserFirstName + ' UserLastName' AS Author,
u.UserLastName,
u.UserEmailAddress,
e.EventID,
e.EventName,
e.EventDescription,
e.EventVenue,
e.EventDate,
e.AddedBy,
e.Pending,
e.DateAdded,
e.DateEditted,
u.UserName
FROM dbo.tblUsers u
INNER JOIN dbo.tblEvents e ON u.UserID = ISNULL(e.EdittedBy, e.AddedBy)
@RedFilter的回答听起来不错。但是,如果不适合在
AddedBy
列上进行联接,则可以将联接更改为外部联接
LEFT OUTER JOIN dbo.tblEvents ON dbo.tblUsers.UserID = dbo.tblEvents.EdittedBy
使用左外连接
选择dbo.tblUsers.UserID,
dbo.tblUsers.UserFirstName+“UserLastName”作为作者,
dbo.tblUsers.UserLastName,
dbo.tblUsers.UserEmailAddress,
dbo.tblEvents.EventID,
dbo.tblEvents.EventName,
dbo.tblEvents.EventDescription,
dbo.tblEvents.eventvention,
dbo.tblEvents.EventDate,
dbo.tblEvents.AddedBy,
dbo.tblEvents.Pending,
dbo.tblEvents.DateAdded,
dbo.tblEvents.DateEditted,
dbo.tblUsers.UserName
来自dbo.tblEvents
dbo.tblEvents.EdittedBy=dbo.tblUsers.UserID上的LEFT-OUTER-JOIN dbo.tblUsers基于一个稍微不同的假设,我将提出一个稍微不同的解决方案。假设要返回用户及其添加或编辑的所有事件:
SELECT dbo.tblUsers.UserID,
dbo.tblUsers.UserFirstName + ' UserLastName' AS Author,
dbo.tblUsers.UserLastName,
dbo.tblUsers.UserEmailAddress,
dbo.tblEvents.EventID,
dbo.tblEvents.EventName,
dbo.tblEvents.EventDescription,
dbo.tblEvents.EventVenue,
dbo.tblEvents.EventDate,
dbo.tblEvents.AddedBy,
dbo.tblEvents.Pending,
dbo.tblEvents.DateAdded,
dbo.tblEvents.DateEditted,
dbo.tblUsers.UserName
FROM dbo.tblUsers
JOIN dbo.tblEvents ON dbo.tblUsers.UserID = dbo.tblEvents.AddedBy
UNION
SELECT dbo.tblUsers.UserID,
dbo.tblUsers.UserFirstName + ' UserLastName' AS Author,
dbo.tblUsers.UserLastName,
dbo.tblUsers.UserEmailAddress,
dbo.tblEvents.EventID,
dbo.tblEvents.EventName,
dbo.tblEvents.EventDescription,
dbo.tblEvents.EventVenue,
dbo.tblEvents.EventDate,
dbo.tblEvents.AddedBy,
dbo.tblEvents.Pending,
dbo.tblEvents.DateAdded,
dbo.tblEvents.DateEditted,
dbo.tblUsers.UserName
FROM dbo.tblUsers
JOIN dbo.tblEvents ON dbo.tblUsers.UserID = dbo.tblEvents.EdittedBy
如果这是一个新表,请将DateEdited to ne字段正确拼写为DateEdited。应避免使用联接中的函数。表现很差。
SELECT dbo.tblUsers.UserID,
dbo.tblUsers.UserFirstName + ' UserLastName' AS Author,
dbo.tblUsers.UserLastName,
dbo.tblUsers.UserEmailAddress,
dbo.tblEvents.EventID,
dbo.tblEvents.EventName,
dbo.tblEvents.EventDescription,
dbo.tblEvents.EventVenue,
dbo.tblEvents.EventDate,
dbo.tblEvents.AddedBy,
dbo.tblEvents.Pending,
dbo.tblEvents.DateAdded,
dbo.tblEvents.DateEditted,
dbo.tblUsers.UserName
FROM dbo.tblUsers
JOIN dbo.tblEvents ON dbo.tblUsers.UserID = dbo.tblEvents.AddedBy
UNION
SELECT dbo.tblUsers.UserID,
dbo.tblUsers.UserFirstName + ' UserLastName' AS Author,
dbo.tblUsers.UserLastName,
dbo.tblUsers.UserEmailAddress,
dbo.tblEvents.EventID,
dbo.tblEvents.EventName,
dbo.tblEvents.EventDescription,
dbo.tblEvents.EventVenue,
dbo.tblEvents.EventDate,
dbo.tblEvents.AddedBy,
dbo.tblEvents.Pending,
dbo.tblEvents.DateAdded,
dbo.tblEvents.DateEditted,
dbo.tblUsers.UserName
FROM dbo.tblUsers
JOIN dbo.tblEvents ON dbo.tblUsers.UserID = dbo.tblEvents.EdittedBy