How to: Create Queries using Something Besides a Table (Visual Database Tools)
Za każdym razem, gdy piszesz kwerendy pobierania articulate które kolumny mają, wiersze, a którym procesor kwerend powinien poszukiwać oryginalnych danych.Zazwyczaj ten oryginalnych danych składa się z tabela lub kilku tabel połączonych ze sobą.Jednak oryginalne dane mogą pochodzić ze źródeł innych niż tabele.W rzeczywistości mogą pochodzić z widoków, kwerendy, synonimy lub funkcje zdefiniowane przez użytkownika, która zwraca tabela.
Przy użyciu widoku zamiast tabela
Istnieje możliwość wybrania wierszy z widoku.Na przykład załóżmy, że baza danych zawiera widok o nazwie „ ExpensiveBooks", w którym każdy wiersz opisuje tytuł, w których cena przekracza 19,99.Definicja widoku może wyglądać w następujący sposób:
SELECT *
FROM titles
WHERE price > 19.99
Można wybrać drogie psychologia książek jedynie wybierając książek psychologia z widoku ExpensiveBooks.Wynikowa instrukcja SQL może mieć następującą postać:
SELECT *
FROM ExpensiveBooks
WHERE type = 'psychology'
Podobnie widok może uczestniczyć w operacji łączyć.Na przykład można znaleźć sprzedaży drogich książek jedynie Sprzęgając tabela sprzedaży do widoku ExpensiveBooks.Wynikowa instrukcja SQL może mieć następującą postać:
SELECT *
FROM sales
INNER JOIN
ExpensiveBooks
ON sales.title_id
= ExpensiveBooks.title_id
Aby uzyskać więcej informacji na temat dodawania widoku do kwerendy Zobacz How to: Add Tables to Queries (Visual Database Tools).
Przy użyciu kwerendy zamiast tabela
Istnieje możliwość wybrania wierszy z kwerendy.Na przykład, załóżmy, że zostały już zapisane kwerendy, tytuły i identyfikatory ksiąg coauthored — księgi z więcej niż jednego autora.SQL może wyglądać w następujący sposób:
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
Następnie można napisać inną kwerendę, która opiera się na ten wynik.Na przykład można napisać kwerendę, która pobiera coauthored psychologia ksiąg.Aby napisać taką nową kwerendę, można użyć istniejącej kwerendy jako urządzenie źródłowe danych nowej kwerendy.Wynikowa instrukcja SQL może mieć następującą postać:
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
)
co_authored_books
WHERE type = 'psychology'
Uwydatnione tekst zawiera istniejącą kwerendę, zastosowaną jako urządzenie źródłowe danych nowej kwerendy.Należy zauważyć, że nowej kwerendy użyto alias ("co_authored_books") istniejącej kwerendy.Aby uzyskać więcej informacji na temat aliasów zobacz How to: Create Table Aliases (Visual Database Tools) i How to: Create Column Aliases (Visual Database Tools).
Podobnie kwerenda może uczestniczyć w operacji łączyć.Na przykład można znaleźć sprzedaży drogich książek coauthored jedynie sprzęgając widok ExpensiveBooks do pobierania książki coauthored kwerendy.Wynikowa instrukcja SQL może mieć następującą postać:
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
)
Aby uzyskać więcej informacji na temat dodawania kwerendy do kwerendy Zobacz How to: Add Tables to Queries (Visual Database Tools).
Za pomocą funkcja zdefiniowane przez użytkownika zamiast tabela
W programie SQL Server 2000 lub wyższym można utworzyć funkcja zdefiniowaną przez użytkownika, która zwraca tabela.Takie funkcje, są użyteczne przy wykonywaniu złożonych lub proceduralnych logikę.
Na przykład załóżmy, że tabela pracownik zawiera dodatkową kolumna, employee.manager_emp_id i że istnieje klucz obcy z manager_emp_id do employee.emp_id.W tabela pracowników każdy wiersz kolumna manager_emp_id wskazuje szefa pracownika.Bardziej precyzyjnie wskazuje pracownika firmy przełożonemu.Można utworzyć funkcja zdefiniowanej przez użytkownika, która zwraca tabela zawierającą jeden wiersz dla każdego pracownika, pracujące w określonym wysokiego poziom menedżera w hierarchii organizacyjnej.Może wywołać funkcja fn_GetWholeTeam i zaprojektować go tak, aby wykonać zmienną wprowadzania — wartość menedżera zespołu, w której chcesz pobrać.
Można napisać kwerendę, która korzysta z funkcja fn_GetWholeTeam jako urządzenie źródłowe danych.Wynikowa instrukcja SQL może mieć następującą postać:
SELECT *
FROM
fn_GetWholeTeam ('VPA30890F')
"VPA30890F" jest wartość kierownika organizacji, której chcesz pobrać.Aby uzyskać więcej informacji na temat dodawania do kwerendy funkcja zdefiniowanej przez użytkownika Zobacz How to: Add Tables to Queries (Visual Database Tools). Aby zapoznać się z pełnym opisem funkcji zdefiniowanych przez użytkownika Zobacz User-Defined Functions (Database Engine).