Если вы посмотрите на синтаксис на сайте MSDN: FROM (Transact-SQL) , вы получите что-то вроде этого:
<joined_table> ::=
{
<table_source> <join_type> <table_source> ON <search_condition>
| <table_source> CROSS JOIN <table_source>
| left_table_source { CROSS | OUTER } APPLY right_table_source
| [ ( ] <joined_table> [ ) ]
}
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
, где вы видите (не очень ясно :)), что у каждого JOIN
должно быть предложение ON
, кроме CROSS JOIN
.
Существует одно исключение, когда вы помещаете условие JOIN
в предложение WHERE
, как показано ниже:
select * from t1, t2
where t1.id = t2.t1_id
Поскольку я не вижу ни одного предложения WHERE
в вашем запросе, этот запрос не будет работать, вы получите что-то вроде этого:
Сообщение 102, Уровень 15, Состояние 1, Строка 6
Неверный синтаксис рядом с 'e1'.