New Features and Upgrading Guide
CHAPTER 4. Behavior Changes
Transact-SQL outer joins use join operators (*= and =*) in the WHERE clause, while SQL/92 outer joins use an ON keyword in the FROM clause to express the join.
In Version 6 there are some changes to the behavior of Transact-SQL outer joins: some joins allowed in previous versions of the software now give syntax errors.
Transact-SQL outer joins were implemented for compatibility with Sybase SQL Server (now Adaptive Server Enterprise). The changes made reflect changes made in recent versions of Adaptive Server Enterprise. These changes give errors for outer joins that have potentially ambiguous syntax. Increasing the precision required in queries improves the reliability of query results.
The changes are as follows:
You cannot mix SQL/92 syntax and Transact-SQL outer join syntax in a single query. This applies to views used by a query also: if a view is defined using one dialect for an outer join, the same dialect must be used for any outer-join queries on that view.
A table cannot participate in both a Transact-SQL outer join clause and a regular join clause. For example, the following WHERE clause is not allowed:
WHERE R.x *= S.x AND S.y = T.y
When you cannot rewrite your query to avoid using a table in both an outer join and a regular join clause, you must divide your statement into two separate queries.
You cannot use a subquery that contains the null-supplying table of an outer join. For example, the following WHERE clause is not allowed:
WHERE R.x *= S.y AND EXISTS ( SELECT * FROM T WHERE T.x = S.x )