Двойное внутреннее объединение выдает неожиданную ошибку - PullRequest
3 голосов
/ 18 марта 2012

В моей базе данных у меня есть три таблицы:

  • Users: UserID (автоматическая нумерация), UserName, UserPassword и несколько других неважных полей.
  • PrivateMessages: MessageID (автоматическая нумерация), SenderID и несколько других полей, определяющих содержимое сообщения.
  • MessageStatus: MessageID, ReceiverID, MessageWasRead (Boolean)

Мне нужен запрос, в который я ввожу идентификатор пользователя и получаю все полученные им личные сообщения.Кроме того, мне также нужно получить имя пользователя отправителя каждого сообщения.Для этого я написал следующий запрос:

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 Ответ

4 голосов
/ 18 марта 2012

Вам нужны скобки с 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];
...