我再次在这里就我创建的观点问我的问题。 在我的tblEvents上有8条记录,但我创建了它只显示3条记录的视图。我怀疑该视图没有从我的tblEvents中读取空值。我该如何解决这个问题?alt text http://img69.imageshack.us/img69/143/vwevents.png
alt text http://img43.imageshack.us/img43/8418/tblevents.png
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
答案 0 :(得分:4)
我假设如果记录尚未编辑,那么您想要加入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)
答案 1 :(得分:2)
@ RedFilter的回答对我来说听起来不错。但是,如果加入AddedBy
列不合适,则可以将联接更改为外部联接。
LEFT OUTER JOIN dbo.tblEvents ON dbo.tblUsers.UserID = dbo.tblEvents.EdittedBy
答案 2 :(得分:0)
使用LEFT OUTER JOIN
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 来自dbo.tblEvents LEFT OUTER JOIN dbo.tblUsers ON dbo.tblEvents.EdittedBy = dbo.tblUsers.UserID
答案 3 :(得分:0)
我将根据略有不同的假设提出一个稍微不同的解决方案。假设您要返回用户以及他们已添加或编辑的所有事件:
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