Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Sempre que você escreve uma consulta de recuperação, você articula as colunas e as linhas que você quer, e onde o processador de consulta deve procurar os dados originais. Tipicamente, esses dados originais consistem em uma tabela ou várias tabelas unidas. Mas os dados originais podem vir de fontes diferentes de tabelas. Na realidade, podem vir de exibições, consultas, sinônimos ou funções definidas pelo usuário que retornam uma tabela.
Usar uma exibição no lugar de uma tabela
Você pode selecionar linhas de uma exibição. Por exemplo, suponha que o banco de dados inclui uma exibição chamada "ExpensiveBooks" na qual cada linha descreve um título cujo preço excede 19,99. A definição da exibição pode ter esta aparência:
SELECT *
FROM titles
WHERE price > 19.99;
Você pode selecionar os livros caros de psicologia selecionando apenas os livros de psicologia da exibição ExpensiveBooks. O SQL resultante pode ter esta aparência:
SELECT *
FROM ExpensiveBooks
WHERE type = 'psychology';
Da mesma forma, um modo de exibição pode participar de uma JOIN operação. Por exemplo, você pode achar as vendas de livros caros unindo somente a tabela de vendas à exibição ExpensiveBooks. O SQL resultante pode ter esta aparência:
SELECT *
FROM sales
INNER JOIN ExpensiveBooks
ON sales.title_id = ExpensiveBooks.title_id;
Para obter mais informações sobre como adicionar uma exibição a uma consulta, consulte Adicionar tabelas a consultas (Visual Database Tools).
Usar uma consulta no lugar de uma tabela
Você pode selecionar linhas de uma consulta. Por exemplo, suponha você já escreveu uma consulta que recupera títulos e identificadores dos livros de coautoria, ou seja, livros com mais de um autor. O SQL pode ter esta aparência:
SELECT titles.title_id,
title,
type
FROM titleauthor
INNER JOIN titles
ON titleauthor.title_id = titles.title_id
GROUP BY titles.title_id, title, type
HAVING COUNT(*) > 1;
Depois, você pode escrever outra consulta com base nesse resultado. Por exemplo, é possível escrever uma consulta que recupera os livros de psicologia com coautoria. Para escrever essa consulta nova, você pode usar a consulta existente como fonte de dados da nova consulta. O SQL resultante pode ter esta aparência:
SELECT title
FROM (SELECT titles.title_id,
title,
type
FROM titleauthor
INNER JOIN titles
ON titleauthor.title_id = titles.title_id
GROUP BY titles.title_id, title, type
HAVING COUNT(*) > 1) AS co_authored_books
WHERE type = 'psychology';
O texto enfatizado mostra a consulta existente usada como fonte de dados da nova consulta. A nova consulta usa um alias ("co_authored_books") para a consulta existente. Para obter mais informações sobre aliases, consulte Criar aliases de tabela (Visual Database Tools) e Criar aliases de coluna (Visual Database Tools).
Da mesma forma, uma consulta pode participar de uma JOIN operação. Por exemplo, você pode encontrar as vendas de livros caros com coautoria unindo somente a exibição ExpensiveBooks à consulta para recuperar a consulta de livros com coautoria. O SQL resultante pode ter esta aparência:
SELECT
ExpensiveBooks.title
FROM
ExpensiveBooks
INNER JOIN
(
SELECT
titles.title_id,
title,
type
FROM
titleauthor
INNER JOIN
titles
ON titleauthor.title_id
= titles.title_id
GROUP BY
titles.title_id,
title,
type
HAVING COUNT(*) > 1
)
Para obter mais informações sobre como adicionar uma consulta a uma consulta, consulte Adicionar tabelas a consultas (Visual Database Tools).
Usar uma função definida pelo usuário no lugar de uma tabela
Você pode criar uma função definida pelo usuário que retorna uma tabela. Tais funções são úteis para executar lógica complexa ou de procedimento.
Por exemplo, suponha que a tabela do funcionário contenha uma coluna employee.manager_emp_idadicional e que exista uma chave estrangeira de manager_emp_id para employee.emp_id. Em cada linha da tabela de funcionários, a manager_emp_id coluna indica o chefe do funcionário. Mais precisamente, indica o chefe emp_iddo funcionário. Você pode criar uma função definida pelo usuário que retorna a tabela contendo uma linha para cada funcionário que trabalha em uma determinada hierarquia organizacional de gerenciamento de alto nível. Você pode chamar a função fn_GetWholeTeam e projetá-la para usar uma variável de entrada , a emp_id do gerente cuja equipe você deseja recuperar.
Você pode escrever uma consulta que use a função fn_GetWholeTeam como uma fonte de dados. O SQL resultante pode ter esta aparência:
SELECT *
FROM fn_GetWholeTeam('VPA30890F');
VPA30890F é o emp_id gerente cuja organização você deseja recuperar. Para obter mais informações sobre como adicionar uma função definida pelo usuário a uma consulta, consulte Adicionar tabelas a consultas (Visual Database Tools). Para obter uma descrição completa das funções definidas pelo usuário, consulte funções definidas pelo usuário.