Jak Tworzenie kwerendy za pomocą czegoś oprócz tabeli (wizualne Narzędzia bazy danych)
Ilekroć napisać kwerendę pobierania, przegubowego łączenia jakie kolumny mają, jakie wierszy, i którym procesor kwerend powinien poszukiwać oryginalnych danych.Zwykle oryginalne dane składa się z tabela lub kilku sprzężonych tabel.Jednak oryginalne dane mogą pochodzić ze źródeł innych niż tabele.W fakt, mogą pochodzić z widoków, kwerendy, synonimy lub zdefiniowane przez użytkownika funkcje to zwrotu tabela.
Używanie widoku zamiast tabeli
Możliwość wybrania wierszy z widoku.Załóżmy, że baza danych zawiera widok o nazwie "expensivebooks" w którym każdy wiersz opisuje tytuł, których cena przekracza 19,99.Definicja widoku może wyglądać następująco:
SELECT *
FROM titles
WHERE price > 19.99
Można wybrać drogie po prostu książki jedynie, wybierając po prostu książki z widoku ExpensiveBooks.Wynikowa instrukcja SQL może wyglądać następująco:
SELECT *
FROM ExpensiveBooks
WHERE type = 'psychology'
Podobnie widok może także uczestniczyć w operacji JOIN.Na przykład można znaleźć sprzedaży drogich książek, sprzęgając tabela danych o sprzedaży do widoku ExpensiveBooks.Wynikowa instrukcja SQL może wyglądać następująco:
SELECT *
FROM sales
INNER JOIN
ExpensiveBooks
ON sales.title_id
= ExpensiveBooks.title_id
Aby uzyskać więcej informacji dotyczących dodawania widoku do kwerendy, zobacz Jak Dodawanie tabel do kwerendy (wizualne Narzędzia bazy danych).
Użycie kwerendy zamiast tabeli
Możliwość wybrania wierszy z kwerendy.Załóżmy, że napisano już kwerendę tytuły i identyfikatory pobierającą — księgi z więcej niż jednego autora.SQL może wyglądać następująco:
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ę, bazującą na tym wyniku.Na przykład można napisać kwerendę, która pobiera psychologii pobierającą książki.Aby napisać taką nową kwerendę, można użyć istniejącej kwerendy jako źródło danych nowej kwerendy.Wynikowa instrukcja SQL może wyglądać następująco:
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'
Pokazuje, w tekocie wyróżniono istniejącą kwerendę, zastosowaną jako źródło danych nowej kwerendy.Należy zauważyć, że w nowej kwerendzie użyto alias ("co_authored_books") istniejącej kwerendy.Aby uzyskać więcej informacji na temat aliasów, zobacz Jak Tworzenie aliasów tabel (wizualne Narzędzia bazy danych) i Jak Tworzenie aliasów kolumn (wizualne Narzędzia bazy danych).
Podobnie może także uczestniczyć w operacji JOIN.Na przykład można znaleźć sprzedaży drogich książek pobierającą sprzęgając widok ExpensiveBooks kwerendą pobierającą.Wynikowa instrukcja SQL może wyglądać następująco:
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 o dodawaniu kwerendy na kwerendę, zobacz Jak Dodawanie tabel do kwerendy (wizualne Narzędzia bazy danych).
Za pomocą funkcji zdefiniowanej przez użytkownika zamiast tabeli
W programie SQL Server 2000 lub wyższym można utworzyć funkcja zdefiniowanej przez użytkownika, która zwraca tabela.Funkcje takie są przydatne przy przeprowadzaniu logiki złożonych lub proceduralnych.
Na przykład załóżmy, że tabela pracownik zawiera dodatkową kolumna, employee.manager_emp_id i że istnieje klucz obcy z manager_emp_id pracownicy.W każdym wierszu tabela pracowników kolumna manager_emp_id określa przełożonego danego pracownika.Bardziej precyzyjnie wskazuje pracownika przełożonemu pracownika.Można utworzyć zdefiniowanej przez użytkownika funkcja, która zwraca tabela zawierającą jeden wiersz dla każdego z pracowników zatrudnionych w ciągu określonego high -poziom Menedżera hierarchii organizacyjnej.Może wywołać funkcja fn_GetWholeTeam (fn_GetWholeTeam) i projektowania, aby jej zmienną wejściową — był identyfikator emp_id kierownika którego zespół ma być pobrany.
Można napisać kwerendę, funkcja fn_GetWholeTeam (fn_GetWholeTeam) źródło danych.Wynikowa instrukcja SQL może wyglądać następująco:
SELECT *
FROM
fn_GetWholeTeam ('VPA30890F')
"VPA30890F" to ID_Pracownika chcesz pobrać.Aby uzyskać więcej informacji o dodawaniu do kwerendy funkcja zdefiniowanych przez użytkownika, zobacz Jak Dodawanie tabel do kwerendy (wizualne Narzędzia bazy danych).Pełny opis funkcji zdefiniowanych przez użytkownika, zobacz Funkcje zdefiniowane przez użytkownika (aparat bazy danych).