Aplicar la cruz y el exterior del servidor SQL

Aplicar la cruz y el exterior del servidor SQL

Las funciones valoradas en la tabla son un tipo de funciones en SQL Server que devuelve los datos como tablas. Al realizar uniones en SQL Server, puede unir filas de dos o más tablas de base de datos. Sin embargo, la capacidad de unir una tabla con una salida de una función valorada de tabla no es compatible a menos que use operadores de aplicaciones.

SQL Server admite dos operadores de aplicaciones:

  1. Aplicar cruzado.
  2. Aplicar externo.

La aplicación cruzada es muy similar, semánticamente, a una unión interna de SQL Server. Esto significa que recupera las filas de una función valorada de tabla y la de la tabla para unirse solo donde hay coincidencias entre las dos tablas.

Aplicación externa, se unirá a los registros de una función valorada en la tabla, y la tabla definida, independientemente de las filas coincidentes.

Para comprender mejor cómo usar operadores de aplicaciones cruzadas y exteriores en SQL Server, tomemos un enfoque práctico.

Comience creando una base de datos de prueba:

Crear base de datos ApplyDB;

Cambiar a la base de datos Crear:

usar ApplyDB;

A continuación, cree tablas e inserte datos de muestra como se muestra:

createTableusers
(
ID int identidad principal principal nulo,
nombre de usuario Varchar (50) No nulo,
)
Publicaciones creables
(
ID int identidad principal principal nulo,
post_name varchar (255) no nulo,
Categoría Varchar (50),
Fecha de PUB_DATE,
user_id int no nulo
);
InsertinTousers (nombre de usuario)
Valores ('Breadyoga'),
('Sputnik1'),
('babayaga'),
('Jagten'),
('Lavalp');
InsertInto Publics (post_name, categoría, pub_date, user_id)
Valores ('Title1', 'Category1', '2021-12-31', 1),
('Title2', 'Categy2', '2019-03-03', 1),
('Title3', 'Categoría 3', '2021-01-01', 2),
('Title4', 'Categoría 4', '2021-06-07', 5),
('Title5', 'Categoría 5', '2020-04-11', 3);

El script de consulta de ejemplo crea dos tablas: usuarios y publicaciones. La tabla de publicaciones contiene una columna user_id que contiene los valores de la tabla de los usuarios que permiten relaciones de uno a muchos en la base de datos.

Aplicar la cruz del servidor SQL

Intentemos una unión interna con una mesa valorada como:

CreateFunction getPostsByid (@id int)
returnstable
como
devolver
(
Seleccione * de publicaciones donde user_id = 1
);
ir
seleccionar u.nombre de usuario, P.ID, P.post_name, p.pub_date
fromusers u
Innerjoin getPostsbyid (u.id) P
sobre ti.ID = P.user_id;

SQL Server devolverá un error como:

Para resolver esto, podemos usar la aplicación cruzada como:

seleccionar u.nombre de usuario, P.ID, P.post_name, p.pub_date
De los usuarios u
Cross aplica getpostsbyid (u.id) P

La consulta anterior debe ejecutarse con éxito y devolver el resultado como:

Aplicar el exterior del servidor SQL

Podemos buscar las filas del físico y la función valorada de la tabla utilizando la aplicación externa como se muestra:

seleccionar u.nombre de usuario, P.ID, P.post_name, p.pub_date
De los usuarios u
Aplicar externo getPostsbyid (u.id) P

El conjunto de consultas resultante es como se muestra:

Conclusión

Este artículo cubre cómo trabajar con operadores de aplicaciones exteriores y de aplicaciones de SQL Server para unirse a una tabla física y una función valorada en la tabla.