Эта статья переведена вручную. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст.
Перевод
Текст оригинала
Эта тема еще не получила оценку - Оценить эту тему

SR0010: не используйте устаревший синтаксис при объединении таблиц или представлений

Visual Studio 2010

Идентификатор RuleId

SR0010

Категория

Microsoft.Design

Критическое изменение

Не критическое

Одно или несколько соединений между таблицами и представлениями используют устаревший синтаксис (такой как =, *= и =* в предложении WHERE) вместо текущего синтаксиса.

Соединения, использующие устаревший синтаксис, делятся на две категории:

Внутреннее соединение

Для внутреннего соединения значения соединяемых столбцов сравниваются с помощью оператора сравнения, такого как "=", "<", ">=" и т.п. Внутренние соединения возвращают строки, только если хотя бы одна строка из каждой таблицы соответствует условиям соединения.

Внешнее соединение

Внешние объединения возвращают все строки из по крайней мере одной таблицы или представления, указанных в предложении FROM, если они удовлетворяют условиям поиска WHERE или HAVING. При использовании *= и = * для указания внешнего соединения применяется устаревший синтаксис.

Чтобы устранить нарушение во внутреннем соединении, используйте синтаксис INNER JOIN, как показано в примере ниже в этом же разделе. Дополнительные сведения см. на странице Использование внутренних соединений (страница может быть на английском языке) веб-сайта корпорации Майкрософт.

Чтобы устранить нарушение во внешнем соединении, используйте подходящий синтаксис OUTER JOIN, как показано в примерах ниже в этом же разделе. Имеются следующие варианты:

  • LEFT OUTER JOIN или LEFT JOIN

  • RIGHT OUTER JOIN или RIGHT JOIN

    Примечание Примечание

    Transact-SQL поддерживает FULL OUTER JOIN и FULL JOIN, но в этом типе соединения не было предыдущего синтаксиса.

Дополнительные сведения см. на странице Использование внешних соединений (страница может быть на английском языке) веб-сайта корпорации Майкрософт.

Не следует отключать данные предупреждения. Следует исправить все экземпляры, поскольку устаревший синтаксис может не работать в будущих выпусках SQL Server.

В этих шести примерах показаны следующие параметры.

  1. В примере 1 демонстрируется устаревший синтаксис для внутреннего соединения.

  2. В примере 2 показывается порядок обновления примера 1, чтобы в нем использовался текущий синтаксис.

  3. В примере 3 демонстрируется устаревший синтаксис для левого внешнего соединения.

  4. В примере 4 показывается порядок обновления примера 2, чтобы в нем использовался текущий синтаксис.

  5. В примере 5 демонстрируется устаревший синтаксис для правого внешнего соединения.

  6. В примере 6 показывается порядок обновления примера 5, чтобы в нем использовался текущий синтаксис.

-- Example 1: Deprecated syntax for an inner join
SELECT [T2].[c3], [T1].[c3] 
FROM [dbo].[Table2] T2, [dbo].[Table1] T1 
WHERE [T1].[ID] = [T2].[ID]

-- Example 2: Current syntax for an inner join
SELECT [T2].[c3], [T1].[c3] 
FROM [dbo].[Table2] AS T2
INNER JOIN [dbo].[Table1] as T1
ON [T2].[ID] = [T2].[ID]

-- Example 3: Deprecated syntax for a left outer join
SELECT [T2].[c3], [T1].[c3] 
FROM [dbo].[Table2] T2, [dbo].[Table1] T1 
WHERE [T1].[ID] *= [T2].[ID]

-- Example 4: Fixed syntax for a left outer join
SELECT [T2].[c3], [T1].[c3] 
FROM [dbo].[Table2] AS T2
LEFT OUTER JOIN [dbo].[Table1] as T1
ON [T2].[ID] = [T2].[ID]

-- Example 5: Deprecated syntax for a right outer join
SELECT [T2].[c3], [T1].[c3] 
FROM [dbo].[Table2] T2, [dbo].[Table1] T1 
WHERE [T1].[ID] =* [T2].[ID]

-- Example 6: Fixed syntax for a right outer join
SELECT [T2].[c3], [T1].[c3] 
FROM [dbo].[Table2] AS T2
RIGHT OUTER JOIN [dbo].[Table1] as T1
ON [T2].[ID] = [T2].[ID]
Считаете ли вы эту страницу полезной?
(Осталось символов: 1500)
Содержимое сообщества Добавить