2015-06-15 5 views
1

Я получаю эту конкретную ошибку в течение пары часов, и я до сих пор не могу понять, насколько я ошибаюсь в своем выборе, я пытаюсь для подключения 3 таблиц.Ошибка синтаксиса (отсутствующий оператор) в выражении запроса ''

"SELECT POItem.PO AS 'Purchase_Order', POItem.Qty AS 'Quantity', 
POItem.BCurr as 'Currency', POItem.TotalCost, PO.Vendor, Master.Desc1 
FROM PO 
LEFT JOIN POItem ON PO.ID = POItem.PO AND 
INNER JOIN Master ON Master.IPN = POItem.IPN 
WHERE POItem.IPN = '" & TextBox1.Text & "' 
ORDER BY POItem.PO DESC" 
+1

перед внутренним соединением не нужно 'AND'. –

+0

Если вы не знакомы с MS Access SQL, лучше всего использовать окно дизайна запроса. – Fionnuala

+0

@ahilkumar К сожалению, есть некоторая ошибка, когда я удаляю AND. Он говорит об ошибке синтаксиса (отсутствующий оператор) в выражении запроса «PO.ID = POItem.PO INNER JOIN Master ON Master.IPN = POItem.IPN». –

ответ

3

Существует AND ключевое слово, которое не является необходимым в этой позиции (как раз перед INNER JOIN). Если вы удалите его и добавьте скобки вокруг LEFT JOIN, ваш запрос должен работать:

"SELECT POItem.PO AS 'Purchase_Order', POItem.Qty AS 'Quantity', 
POItem.BCurr as 'Currency', POItem.TotalCost, PO.Vendor, Master.Desc1 
FROM (PO 
LEFT JOIN POItem ON PO.ID = POItem.PO) 
INNER JOIN Master ON Master.IPN = POItem.IPN 
WHERE POItem.IPN = '" & TextBox1.Text & "' 
ORDER BY POItem.PO DESC" 

Кстати, вместо того, чтобы в том числе значения TextBox1.Text в строке, а использовать параметры для того, чтобы избежать атак SQL-инъекции.

+0

MS Access очень суетливый в отношении скобок на соединениях. Это не будет работать. – Fionnuala

+0

К сожалению, есть некоторая ошибка, когда я удаляю AND. Он говорит об ошибке синтаксиса (отсутствующий оператор) в выражении запроса «PO.ID = POItem.PO INNER JOIN Master ON Master.IPN = POItem.IPN». –

+0

@Fionnuala прав, MS Access требует еще несколько скобок. Я обновляю свой пост. – Markus