SQL Server Cross e Exterior Aplicar

SQL Server Cross e Exterior Aplicar

As funções de avaliação da tabela são um tipo de funções no servidor SQL que retorna dados como tabelas. Ao executar junções no SQL Server, você pode ingressar em linhas de duas ou mais tabelas de banco de dados. No entanto, a capacidade de ingressar em uma tabela com uma saída de uma função avaliada por tabela não é suportada, a menos que você use os operadores Aplicar aplicativos.

O SQL Server suporta dois operadores de aplicação:

  1. Cross Apply.
  2. Aplicação externa.

Cross Apply é de perto, semanticamente, a um sql servidor interno de junção. Isso significa que ele recupera as fileiras de uma tabela valiosa função e a da tabela para se unir apenas onde houver correspondências entre as duas tabelas.

Aplicação externa, se juntará aos registros de uma função avaliada por tabela, e a tabela definida, independentemente de qualquer linha correspondente.

Para entender melhor como usar operadores de aplicação cruzada e externa no SQL Server, vamos adotar uma abordagem prática.

Comece criando um banco de dados de teste:

Criar banco de dados Aplicardb;

Alterne para o banco de dados Criar:

Usar Aplicarddb;

Em seguida, crie tabelas e insira dados de amostra como mostrado:

CreateTableUsers
(
Id int Identity Keynot primário nulo,
nome de usuário varchar (50) não nulo,
)
CreateTable Posts
(
Id int Identity Keynot primário nulo,
post_name varchar (255) não nulo,
Categoria Varchar (50),
pub_date data,
user_id int não nulo
);
insertIntousers (nome de usuário)
Valores ('Breadyoga'),
('Sputnik1'),
('Babayaga'),
('Jagten'),
('Lavalp');
InsertINTO Posts (post_name, categoria, pub_date, user_id)
valores ('title1', 'category1', '2021-12-31', 1),
('title2', 'category2', '2019-03-03', 1),
('title3', 'category3', '2021-01-01', 2),
('title4', 'category4', '2021-06-07', 5),
('Title5', 'Category5', '2020-04-11', 3);

O exemplo de consulta cria duas tabelas: usuários e postagens. A tabela de postagens contém uma coluna User_id que contém os valores da tabela de usuários, permitindo relacionamentos individuais no banco de dados.

SQL Server Cross Aplicar

Vamos tentar uma união interna com uma mesa de mesa como:

CreateFunção getPostsById (@id int)
returnstable
como
retornar
(
Selecione * de postagens onde user_id = 1
);
ir
Selecione U.Nome de usuário, p.id, p.post_name, p.pub_date
Fromusers u
Innerjoin getPostsById (u.id) p
em você.id = p.ID do usuário;

O SQL Server retornará um erro como:

Para resolver isso, podemos usar o Cross Apply como:

Selecione U.Nome de usuário, p.id, p.post_name, p.pub_date
de usuários u
Cross Apply getPostsById (u.id) p

A consulta acima deve ser executada com sucesso e retornar o resultado como:

SQL Server Exterior Aplicar

Podemos buscar as linhas da função física e da tabela usando a aplicação externa, conforme mostrado:

Selecione U.Nome de usuário, p.id, p.post_name, p.pub_date
de usuários u
Aplicar externo getPostsById (u.id) p

O conjunto de consultas resultantes é como mostrado:

Conclusão

Este artigo aborda como trabalhar com os operadores externos e cruzados do SQL Server para se juntar a uma tabela física e uma função avaliada pela tabela.