Double Inner Join会产生意外错误

时间:2012-03-18 17:32:35

标签: sql ms-access inner-join

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

  • 用户: UserID(自动编号),UserName,UserPassword和其他一些不重要的字段。
  • PrivateMessages: MessageID(自动编号),SenderID和其他一些定义邮件内容的字段。
  • MessageStatus: MessageID,ReceiverID,MessageWasRead(Boolean)

我需要的是一个查询,我输入了一个用户的ID,我收到了他收到的所有私信。另外,我还需要收到每条消息的发件人UserName。为此,我写了以下查询:

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“。

任何可能导致此问题的想法? 感谢。

1 个答案:

答案 0 :(得分:4)

您需要使用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];
相关问题