SR0010: Evite usar una sintaxis desusada al unir tablas o vistas

Identificador de regla

SR0010

Categoría

Microsoft.Design

Cambio problemático

Poco problemático

Causa

Una o varias combinaciones entre tablas y vistas usan una sintaxis desusada (como =, *= o =* en una cláusula WHERE) en lugar de una sintaxis actualizada.

Descripción de la regla

Las combinaciones que usan la sintaxis desusada se dividen en dos categorías:

  • Combinación interna
    Para una combinación interna, los valores de las columnas que se combinan se comparan mediante un operador de comparación como =, <, > =, etc. Las combinaciones internas devuelven filas únicamente si al menos una fila de cada tabla cumple la condición de combinación.

  • Combinación externa
    Las combinaciones externas devuelven todas las filas de al menos una de las tablas o vistas especificadas en la cláusula FROM, siempre y cuando esas filas cumplan las condiciones de búsqueda WHERE o HAVING. Si utiliza *= o =* para especificar una combinación externa, utiliza una sintaxis desusada.

Cómo corregir infracciones

Para corregir una infracción en una combinación interna, utilice la sintaxis INNER JOIN, como se muestra en el ejemplo posterior de este tema. Para obtener más información, vea esta página en el sitio web de Microsoft: Usar combinaciones internas.

Para corregir una infracción en una combinación externa, utilice la sintaxis OUTER JOIN apropiada, como se muestra en los ejemplos posteriores de este tema. Tiene las opciones siguientes:

  • COMBINACIÓN EXTERNA IZQUIERDA o COMBINACIÓN IZQUIERDA

  • COMBINACIÓN EXTERNA DERECHA o COMBINACIÓN DERECHA

    Nota

    Transact-SQL admite combinación externa completa y combinación completa, pero ese tipo de unión no tenía sintaxis previa.

Para obtener más información, vea esta página en el sitio web de Microsoft: Usar combinaciones externas.

Cuándo suprimir advertencias

Esta advertencia no se debe suprimir. Debe corregir todas las instancias porque la sintaxis desusada quizás no funcione en versiones futuras de SQL Server.

Ejemplo

En los seis ejemplos se muestran las siguientes opciones:

  1. El ejemplo 1 muestra la sintaxis desusada para una combinación interna.

  2. El ejemplo 2 muestra cómo actualizar el ejemplo 1 para utilizar la sintaxis actual.

  3. El ejemplo 3 muestra la sintaxis desusada para una combinación externa izquierda.

  4. El ejemplo 4 muestra cómo actualizar el ejemplo 2 para utilizar la sintaxis actual.

  5. El ejemplo 5 muestra la sintaxis desusada para una combinación externa derecha.

  6. El ejemplo 6 muestra cómo actualizar el ejemplo 5 para utilizar la sintaxis actual.

-- 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]

Vea también

Conceptos

Analizar el código de base de datos para mejorar la calidad del código