Проблема с синтаксисом SQL (левое соединение) - PullRequest
2 голосов
/ 03 ноября 2010

Итак, у меня проблема с запросом, и я не совсем понимаю, где. Комментарий размещается там, где есть синтаксическая ошибка. Запрос намного больше, я попытался сократить его, чтобы сделать правильный, но аккуратный запрос.

Это использует odbc для подключения к базе данных Progress. Мне сказали, что он использует строгий SQL-92.

SELECT itemcust."item-cust", 
       itemcust."cust-no", 
       corptreeCust.code 

FROM      pub."item-cust" itemcust 
JOIN      pub.customer cust 
left join pub.salesstructcustomer struct 
     on ( struct."corp-cust-type" = cust."corp-cust-type" 
      and struct."corp-cust-num" = cust."corp-cust-num" 
     ) 
left join pub.corptree corptreeCust 
      on ( corptreeCust.uid = struct.corptreeid /* program says SQL Syntax error here */
       and corptreeCust.category = 'store' 
      ) 

where ( itemcust."in-entity" = {$entity} or itemcust."in-entity" = '*') 
  and itemcust."item-no" = {$itemno} 
  and ( itemcust."cust-no" = {$custno} or itemcust."cust-no" = '*') 
  and cust."cust-no" = {$custno}

Спасибо!

Ответы [ 4 ]

6 голосов
/ 03 ноября 2010

Ваш псевдоним таблицы для pub.salesstructcustomer равен struct, а не structc, как указано в соединении.

5 голосов
/ 03 ноября 2010

Это опечатка?Похоже, что он смотрит на structc вместо struct, если я что-то пропустил.

3 голосов
/ 03 ноября 2010

Похоже, у вас нет предложения on между cust и itemcust. Это, безусловно, может сбить с толку синтаксический анализатор, выдавая ошибку дальше по запросу

0 голосов
/ 03 ноября 2010

Во-первых, я ценю ответы. Тот факт, что предложение ON отсутствовало, было серьезной проблемой, но на самом деле это не было реальной проблемой.

Проблема на самом деле заключалась в том, что uid является зарезервированным словом, и мне пришлось сделать его corptreeCust.\"uid\"

= (

...