H SQL 2.3.6 синтаксис внешнего соединения - PullRequest
0 голосов
/ 27 мая 2020

Я использую H SQL 2.3.6 и хочу выполнить соединение со следующим синтаксисом:

SELECT A.REF FROM TableA A, TableB B
WHERE A.NUM = B.NUM (+)

Но в документации (самая последняя из моих версий H SQL) http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_joined_table синтаксис:

<joined table> ::= <cross join> | <qualified join> | <natural join>

<qualified join> ::= <table reference> | [ <join type> ] JOIN <table reference> <join specification>

<join specification> ::= <join condition> | <named columns join>

<join condition> ::= ON <search condition>

<join type> ::= INNER | <outer join type> [ OUTER ]

<outer join type> ::= LEFT | RIGHT | FULL

<join column list> ::= <column name list>

С моим синтаксисом у меня SQLSyntaxErrorException, и я думаю, это потому, что мой синтаксис несовместим.

Но не имея документации для моей версии H SQL, я не уверен. Вы подтвердили?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 27 мая 2020

(+) - это собственный оператор Oracle для внешних объединений (который поддерживается только Oracle), и даже Oracle рекомендует прекратить его использование.

HSQLDB поддерживает стандартный LEFT JOIN

SELECT ...
FROM TableA A
  LEFT JOIN TableB B on A.NUM = B.NUM;

(не уверен, что правильно понял направление, я не использовал оператор Oracle (+) в течение десятилетий)

0 голосов
/ 27 мая 2020

Никогда не используйте запятые в предложении FROM. Всегда использовать правильный, явный, стандартный , читаемый JOIN синтаксис.

Вы используете archai c, индивидуальный синтаксис для внешнего соединения. Я думаю, вы хотите:

SELECT A.REF
FROM TableA A LEFT JOIN
     TableB B
     ON A.NUM = B.NUM;

Вероятно, вы слишком упростили свой запрос. Как написано, вероятно, нет необходимости во внешнем соединении:

SELECT A.REF
FROM TableA A ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...