Membuat Kueri menggunakan Sesuatu Selain Tabel (Alat Database Visual)

Berlaku untuk:SQL Server

Setiap kali Anda menulis kueri pengambilan, Anda mengartikulasikan kolom apa yang Anda inginkan, baris apa yang Anda inginkan, dan di mana prosesor kueri harus menemukan data asli. Biasanya, data asli ini terdiri dari tabel atau beberapa tabel yang digabungkan. Tetapi data asli dapat berasal dari sumber selain tabel. Bahkan, ini dapat berasal dari tampilan, kueri, sinonim, atau fungsi yang ditentukan pengguna yang mengembalikan tabel.

Menggunakan Tampilan di Tempat Tabel

Anda dapat memilih baris dari tampilan. Misalnya, database menyertakan tampilan yang disebut "Buku Mahal", di mana setiap baris menjelaskan judul yang harganya melebihi 19,99. Definisi tampilan mungkin terlihat seperti ini:

SELECT *  
FROM titles  
WHERE price > 19.99  

Anda dapat memilih buku psikologi yang mahal hanya dengan memilih buku psikologi dari tampilan Buku Mahal. SQL yang dihasilkan mungkin terlihat seperti ini:

SELECT *  
FROM ExpensiveBooks  
WHERE type = 'psychology'  

Demikian pula, tampilan dapat berpartisipasi dalam operasi JOIN. Misalnya, Anda dapat menemukan penjualan buku mahal hanya dengan bergabung dengan tabel penjualan ke tampilan ExpensiveBooks. SQL yang dihasilkan mungkin terlihat seperti ini:

SELECT *  
FROM sales   
         INNER JOIN   
         ExpensiveBooks   
         ON sales.title_id   
         =  ExpensiveBooks.title_id  

Untuk informasi selengkapnya tentang menambahkan tampilan ke kueri, lihat Menambahkan Tabel ke Kueri (Alat Database Visual).

Menggunakan Kueri sebagai Pengganti Tabel

Anda bisa memilih baris dari kueri. Misalnya, Anda telah menulis kueri yang mengambil judul dan pengidentifikasi buku yang ditulis bersama - buku dengan lebih dari satu penulis. SQL mungkin terlihat seperti ini:

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  

Anda kemudian dapat menulis kueri lain yang menyusun hasil ini. Misalnya, Anda dapat menulis kueri yang mengambil buku psikologi yang ditulis bersama. Untuk menulis kueri baru ini, Anda bisa menggunakan kueri yang sudah ada sebagai sumber data kueri baru. SQL yang dihasilkan mungkin terlihat seperti ini:

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'  

Teks yang ditekankan memperlihatkan kueri yang sudah ada yang digunakan sebagai sumber data kueri baru. Perhatikan bahwa kueri baru menggunakan alias ("co_authored_books") untuk kueri yang sudah ada. Untuk informasi selengkapnya tentang alias, lihat Membuat Alias Tabel (Alat Database Visual) dan Membuat Alias Kolom (Alat Database Visual).

Demikian pula, kueri dapat berpartisipasi dalam operasi JOIN. Misalnya, Anda dapat menemukan penjualan buku penulisan bersama yang mahal hanya dengan bergabung dengan tampilan ExpensiveBooks ke kueri yang mengambil buku yang diautorasi bersama. SQL yang dihasilkan mungkin terlihat seperti ini:

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  
        )  

Untuk informasi selengkapnya tentang menambahkan kueri ke kueri, lihat Menambahkan Tabel ke Kueri (Alat Database Visual).

Menggunakan Fungsi User-Defined sebagai Pengganti Tabel

Dalam SQL Server 2000 atau lebih tinggi, Anda dapat membuat fungsi yang ditentukan pengguna yang mengembalikan tabel. Fungsi tersebut berguna untuk melakukan logika yang kompleks atau prosedural.

Misalnya, tabel karyawan berisi kolom tambahan, employee.manager_emp_id, dan bahwa kunci asing ada dari manager_emp_id ke employee.emp_id. Dalam setiap baris tabel karyawan, kolom manager_emp_id menunjukkan bos karyawan. Lebih tepatnya, itu menunjukkan bos karyawan emp_id. Anda dapat membuat fungsi yang ditentukan pengguna yang mengembalikan tabel yang berisi satu baris untuk setiap karyawan yang bekerja dalam hierarki organisasi manajer tingkat tinggi tertentu. Anda dapat memanggil fungsi fn_GetWholeTeam, dan merancangnya untuk mengambil variabel input - emp_id manajer yang timnya ingin Anda ambil.

Anda bisa menulis kueri yang menggunakan fungsi fn_GetWholeTeam sebagai sumber data. SQL yang dihasilkan mungkin terlihat seperti ini:

SELECT *   
FROM   
     fn_GetWholeTeam ('VPA30890F')  

"VPA30890F" adalah emp_id manajer yang organisasinya ingin Anda ambil. Untuk informasi selengkapnya tentang menambahkan fungsi yang ditentukan pengguna ke kueri, lihat Menambahkan Tabel ke Kueri (Alat Database Visual). Untuk deskripsi lengkap tentang fungsi yang ditentukan pengguna, lihat Fungsi yang Ditentukan Pengguna.