Сопоставление броска nvarchar переменных в t-sql

Одна проблема, которая может возникнуть, состоит в том, когда Вы пытаетесь смешаться, старое соединение "стиля запятой" с SQL-92 участвует в том же запросе, например, при необходимости в одном внутреннем объединении и другом внешнем объединении.

SELECT *
FROM table1 AS a, table2 AS b
 LEFT OUTER JOIN table3 AS c ON a.column1 = c.column1
WHERE a.column2 = b.column2;

проблема состоит в том, что в недавних стандартах SQL говорится, что СОЕДИНЕНИЕ оценено перед соединением запятой. Таким образом, ссылка на "a" в НА пункте дает ошибку, потому что имя корреляции еще не было определено как, который НА пункте оценивается. Это - очень запутывающая ошибка добраться.

решение не состоит в том, чтобы смешать два стиля соединений. Можно продолжить использовать стиль запятой в старом коде, но если Вы пишете новый запрос, преобразовываете все соединения в стиль SQL-92.

SELECT *
FROM table1 AS a
 INNER JOIN table2 AS b ON a.column2 = b.column2
 LEFT OUTER JOIN table3 AS c ON a.column1 = c.column1;
28
задан OMG Ponies 27 October 2009 в 16:13
поделиться