Ответ 1
Грамматика SQLite немного отличается от спецификации SQL-92, согласно которой следующие недопустимы:
*OUTER JOIN
*NATURAL OUTER JOIN
*NATURAL CROSS JOIN
Первые два, потому что a <join type>
, чтобы содержать OUTER
, должен также включать перед ним <outer join type>
. Последнее, потому что NATURAL
может присутствовать только в <qualified join>
, а не <cross join>
. Они, похоже, не ведут себя по какой-либо спецификации, поэтому рекомендуется избегать их.
Как было сказано в списке рассылки, SQLite3 поддерживает только три объединения: CROSS JOIN
, INNER JOIN
и LEFT OUTER JOIN
. Следующие эквиваленты:
, == CROSS JOIN
JOIN == INNER JOIN
LEFT JOIN == LEFT OUTER JOIN
Как объяснено в статье wikipedia ключевое слово NATURAL является сокращением для поиска и сопоставления столбцов с одинаковым именем и не влияет на тип соединения.
В соответствии с страница SQLite, 'RIGHT
' и 'FULL
' OUTER JOIN
не поддерживаются.