Мне нужна помощь в создании явного внутреннего соединения для моей курсовой работы - PullRequest
0 голосов
/ 06 января 2019

У меня есть база данных Microsoft Access 2010, которая включает таблицы «Заказы» и «Заказчики». Первичная таблица - таблица бронирований. Таблица Customer связана с таблицей Bookings через ее идентификатор клиента, который является внешним ключом в таблице Bookings. Я хочу получить адрес электронной почты клиента, связанный с определенным бронированием. Тем не менее, сообщение об ошибке синтаксиса продолжает появляться, и я не могу сказать, где ошибка в SQL.

Это для моей курсовой работы по информатике. Мне нужно сделать систему бронирования номеров в отелях. Я пытаюсь отправить автоматические электронные письма-напоминания клиенту за неделю до того, как они должны прибыть для бронирования. Я программирую это в VB.Net 2010 Express, и для него настроена база данных Microsoft Access 2010.

  • Я несколько раз проверил все имена таблиц и столбцов, но ни одно из них не написано неправильно.
  • Я просмотрел учебные пособия Khan Academy по объединениям и использовал интерфейс SQLite для проверки своего запроса. Это работает там, но не в моей системе.

Вот мой код:

Imports System.Data.OleDb

Dim CN As OleDbConnection
Dim DR As OleDbDataReader
Dim SQL As String

Sub OpenDatabase()
    CN = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Coursework Prototype Database.mdb;")
    CN.Open()
End Sub

Public Sub ExecuteSQL()
    Dim CM As New OleDbCommand(SQL, CN)
    DR = CM.ExecuteReader
End Sub

Sub RetrieveCustomerEmail()
    OpenDatabase()
    SQL = ("SELECT tblCustomer.Email_Address FROM tblBookings JOIN tblCustomer ON tblBookings.CustomerID = tblCustomer.CustomerID Where tblBookings.BookingID = 1")
    ExecuteSQL()
    DR.Read()

    Dim CustomerEmail As String = DR.Item("Email_Address").ToString
    CN.Close()
End Sub

Я ожидал, что результатом будет адрес электронной почты, но вместо этого я получил сообщение об ошибке синтаксиса с текстом

Синтаксическая ошибка в предложении FROM.

1 Ответ

0 голосов
/ 06 января 2019

MS Access требует, чтобы внутренние объединения были явно заданы как INNER JOIN, и не будет интерпретировать сокращение JOIN для внутреннего объединения, как принято другими СУБД.

Таким образом, ваш оператор SQL должен быть:

SELECT tblCustomer.Email_Address 
FROM tblBookings INNER JOIN tblCustomer ON tblBookings.CustomerID = tblCustomer.CustomerID
WHERE tblBookings.BookingID = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...