Los tipos de operadores JOIN que nos podemos encontrar en la cláusula FROM son los siguientes:

  • CROSS JOIN: Producto cartesiano de tablas
  • INNER JOIN: Devuelve solo los registros coincidentes
  • LEFT JOIN: Devuelve todas las filas de la tabla de la izquierda y las filas de la derecha que coinciden, las que no coinciden se rellenan a nulos
  • RIGHT JOIN: Devuelve todas las filas de la tabla de la derecha y las filas de la izquierda que coinciden, las que no coinciden se rellenan a nulos
  • FULL JOIN: devuelve de las dos tablas las coincidentes y las no coincidentes, como si hiciéramos y Right y un Left a la vez.

 

Los operadores de tabla son procesados de izquierda a derecha.

Ejemplos:

A continuación, se muestra el conjunto de resultados obtenidos tras la aplicación de diferentes operadores JOIN.

-- ejemplo 4.1. crear tabla

CREATE TABLE [dbo].[Tab_PruebasA](

                [Id] [int] NOT NULL,

                [Descrip] [varchar](50) NULL,

CONSTRAINT [PK_Tab_PruebasA] PRIMARY KEY CLUSTERED ([Id] ASC))

 

CREATE TABLE [dbo].[Tab_PruebasB](

                [Id] [int] NOT NULL,

                [Descrip] [varchar](50) NULL,

                [IdEstado] [bit] NOT NULL CONSTRAINT [DF_Tab_PruebasB_IdEstado]  DEFAULT ((0)),

CONSTRAINT [PK_Tab_PruebasB] PRIMARY KEY CLUSTERED ([Id] ASC)) 

 

-- poblar tablas

INSERT INTO [Tab_PruebasA] VALUES (1,'111111'),(2,'222222'),(3,'333333'),(4,'444444') 

INSERT INTO [Tab_PruebasB] VALUES (1,'111111',0),(2,'222222',1),(5,'555555',0) 

 

 

 

Cuando se trabaja con el operador INNER JOIN es indiferente si la condición o filtro de nuestra consulta la ponemos en el ON del operador o en la cláusula WHERE. Sin embargo, cuando trabajamos con el operador LEFT JOIN o RIGHT JOIN los resultados varían:

 

<< Artículo anterior                                                                                                                                      Siguiente artículo >>