Udostępnij za pośrednictwem


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).