【问题标题】:Double Inner Join generates unexpected error双内连接产生意外错误
【发布时间】:2012-04-03 08:51:41
【问题描述】:

在我的数据库中,我有三个表:

  • 用户: UserID(自动编号)、UserName、UserPassword 和其他一些不重要的字段。
  • PrivateMessages: MessageID(自动编号)、SenderID 和其他一些定义消息内容的字段。
  • MessageStatus: MessageID、ReceiverID、MessageWasRead(布尔值)

我需要的是一个查询,我输入用户的 id 并获得他收到的所有私人消息。另外,我还需要接收每条消息的发件人用户名。为此,我编写了以下查询:

SELECT Users.*, PrivateMessages.*, MessageStatus.*
FROM PrivateMessages
INNER JOIN Users ON PrivateMessages.SenderID = Users.UserID
INNER JOIN MessageStatus ON PrivateMessages.MessageID = MessageStatus.MessageID
WHERE MessageStatus.ReceiverID=[@userid];

但由于某种原因,当我尝试将其保存在我的 Access 数据库中时,我收到以下错误(由我翻译成英文,因为我的办公室使用不同的语言):

表达式中的语法错误(缺少运算符): “PrivateMessages.SenderID = Users.UserID INNER JOIN MessageStatus ON PrivateMessages.MessageID = MessageStatus.MessageI"。

有什么想法会导致这种情况吗? 谢谢。

【问题讨论】:

    标签: sql ms-access inner-join


    【解决方案1】:

    MS Access 需要括号:

    SELECT Users.*, PrivateMessages.*, MessageStatus.*
    FROM (PrivateMessages
    INNER JOIN Users ON PrivateMessages.SenderID = Users.UserID)
    INNER JOIN MessageStatus ON PrivateMessages.MessageID = MessageStatus.MessageID
    WHERE MessageStatus.ReceiverID=[@userid];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-05
      • 2020-05-19
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 2011-01-25
      相关资源
      最近更新 更多