即使cell为null,如何显示数据库记录

时间:2010-08-08 15:13:49

标签: sql-server tsql

我再次在这里就我创建的观点问我的问题。 在我的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

4 个答案:

答案 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