sql — & quot; Синтаксическая ошибка (отсутствует оператор) в выражении запроса & quot; на запрос доступа из переполнения стека

Я пишу SQL-запрос на PHP к базе данных Access, и я получаю эту ошибку:

«SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: -3100 [Microsoft] [ODBC Microsoft Access Driver] Синтаксическая ошибка (отсутствует оператор) в выражении запроса» (FROM [Tbl_Invoice_Details], INNER JOIN [Tbl_Product_Table] ON [Tbl_Invoice_Details.Product_ID] = [Tbl_Product_Table.Product_ID]) WHERE Invoice_ID = Pa_RaM000 ‘. «

Вот мой запрос:

SELECT [Tbl_Invoice_Details.Product_ID],
[Tbl_Invoice_Details.Seed Size], [Tbl_Invoice_Details.Ref2], [Tbl_Invoice_Details.RefNo], [Tbl_Invoice_Details.Quantity Ordered],
[Tbl_Invoice_Details.Quantity Delivered], [Tbl_Invoice_Details.PricePerUnit], [Tbl_Invoice_Details.Extended],
[Tbl_Product_Table.Product_ID], [Tbl_Product_Table.Hybrid Brand], (FROM [Tbl_Invoice_Details] INNER JOIN [Tbl_Product_Table]
ON [Tbl_Invoice_Details.Product_ID] = [Tbl_Product_Table.Product_ID]) WHERE Invoice_ID = ?

Почему это терпит неудачу?

-4

Решение

Ваш запрос не выполняется, потому что все, что заключено в квадратные скобки, интерпретируется как одно имя, поэтому

SELECT [Tbl_Invoice_Details.Product_ID] ... FROM [Tbl_Invoice_Details]

такой же как

SELECT [Tbl_Invoice_Details].[Tbl_Invoice_Details.Product_ID] ... FROM [Tbl_Invoice_Details]

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

То, что вы имели в виду, было

SELECT [Tbl_Invoice_Details].[Product_ID] ... FROM [Tbl_Invoice_Details]

который является (одним из) правильных способов выразить

SELECT [TableName].[FieldName] ... FROM [TableName]
2

Другие решения

Как насчет следующего запроса:

SELECT i.Product_ID, i.[Seed Size], i.Ref2, i.RefNo, i.[Quantity Ordered],
i.[Quantity Delivered], i.PricePerUnit, i.Extended, p.[Hybrid Brand]
FROM Tbl_Invoice_Details i
INNER JOIN Tbl_Product_Table p ON i.Product_ID = p.Product_ID
WHERE i.Invoice_ID = ?
1

Действительно, запятая после [Tbl_Product_Table.Hybrid_Brand] не нужна.
А может быть ваш идентификатор счета между якорями?
Так
WHERE Invoice_ID = Pa_RaM000
превращается в
WHERE Invoice_ID = "Pa_RaM000"

0
По вопросам рекламы [email protected]