【问题标题】:Tables are not joining properly in sql server 2008表在 sql server 2008 中未正确连接
【发布时间】:2014-12-31 07:21:05
【问题描述】:

我必须显示dbo.mail_Messages 表的结果,但问题是Messages 应该显示哪些ID 不在dbo.mail_Reply 中。为此,我正在使用下面的查询,但它什么也没显示。

我还附上了截图:

我该如何解决这个问题?

我的代码:

SELECT
    dbo.mail_Messages.MessageID,
    dbo.mail_Users_Messages_Mapped.PlaceHolderID,
    IsRead,
    SenderId,
    dbo.mail_Messages.Subject,
    dbo.mail_Messages.Body,
    dbo.mail_Messages.Date,UserEmail
FROM
    dbo.mail_Users_Messages_Mapped
JOIN
   dbo.mail_Messages ON dbo.mail_Messages.MessageID = dbo.mail_Users_Messages_Mapped.MessageID
JOIN
   dbo.mail_Users ON dbo.mail_Users.UserID = dbo.mail_Users_Messages_Mapped.UserId
JOIN
   dbo.mail_Reply ON dbo.mail_Reply.MessageID = dbo.mail_Messages.MessageID
WHERE
   UserEmail = 'user1'
   AND dbo.mail_Users_Messages_Mapped.PlaceHolderId = 1
   AND dbo.mail_Messages.MessageID != dbo.mail_Reply.MessageID

【问题讨论】:

  • 你能告诉我任何示例查询吗?拜托,因为我没有得到你想说的......
  • 看看这个例子,注意join条件:sqlfiddle.com/#!2/db40c/2

标签: sql sql-server-2008 select join


【解决方案1】:

您的查询将产生一个空结果,因为它有两个相互矛盾的条件。在join 子句中,您要求:

dbo.mail_Reply.MessageID = dbo.mail_Messages.MessageID

where 子句中,您要求这样做

dbo.mail_Messages.MessageID != dbo.mail_Reply.MessageID

由于一个值​​不能既等于又不等于另一个值,所以这两个条件的组合是一个空结果。

如果我正确理解要求,解决此问题的一种方法是停止 joining mail_Reply,并改用 in 运算符:

SELECT
dbo.mail_Messages.MessageID,
dbo.mail_Users_Messages_Mapped.PlaceHolderID,
IsRead,
SenderId,
dbo.mail_Messages.Subject,
dbo.mail_Messages.Body,
dbo.mail_Messages.Date,UserEmail
FROM
dbo.mail_Users_Messages_Mapped
join
dbo.mail_Messages on dbo.mail_Messages.MessageID = dbo.mail_Users_Messages_Mapped.MessageID
join
dbo.mail_Users on dbo.mail_Users.UserID = dbo.mail_Users_Messages_Mapped.UserId
where
UserEmail = 'user1'
and
dbo.mail_Users_Messages_Mapped.PlaceHolderId = 1
and
dbo.mail_Messages.MessageID NOT IN (SELECT MessageID FROM dbo.mail_Reply)

【讨论】:

    猜你喜欢
    • 2015-11-19
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 2017-04-05
    相关资源
    最近更新 更多