Menumpuk kueri di dalam kueri yang lain atau dalam ekspresi dengan menggunakan subkueri

Penting: Artikel ini adalah terjemahan mesin, lihat penafian. Temukan versi bahasa Inggris artikel di sini sebagai rujukan Anda.

Terkadang Anda ingin menggunakan hasil kueri sebagai bidang di kueri yang lain, atau sebagai kriteria untuk bidang kueri. Sebagai contoh, anggaplah Anda ingin melihat interval antara pesanan untuk setiap produk Anda. Untuk membuat kueri yang memperlihatkan interval ini, Anda perlu membandingkan tiap tanggal pesanan dengan tanggal pesanan lainnya untuk produk tersebut. Membandingkan tanggal pesanan ini juga memerlukan kueri. Anda bisa menumpuk kueri ini di dalam kueri utama Anda dengan menggunakan subkueri.

Anda bisa menuliskan subkueri dalam ekspresi atau dalam pernyataan Structured Query Language (SQL) di tampilan SQL.

Catatan: Artikel ini tidak berlaku untuk aplikasi Access-jenis database Anda mendesain dengan akses dan Terbitkan online baru. Untuk informasi selengkapnya, lihat membuat aplikasi Access .

Di artikel ini

Menggunakan hasil kueri sebagai bidang dalam kueri yang lain

Menggunakan subkueri sebagai kriteria untuk bidang kueri

Kata kunci SQL umum yang bisa Anda gunakan dengan subkueri

Menggunakan hasil kueri sebagai bidang dalam kueri yang lain

Anda bisa menggunakan subkueri sebagai alias bidang. Menggunakan subkueri sebagai alias bidang saat Anda ingin menggunakan subkueri hasil sebagai bidang dalam kueri utama Anda.

Catatan: Subkueri yang Anda gunakan sebagai alias bidang tidak bisa mengembalikan lebih dari satu bidang.

Anda bisa menggunakan alias bidang subkueri untuk menampilkan nilai yang bergantung pada nilai yang lain di baris saat ini, yaitu yang tidak mungkin ditampilkan tanpa menggunakan subkueri.

Sebagai contoh, mari kita kembali ke contoh tempat Anda ingin melihat interval antar pesanan untuk setiap produk Anda. Untuk menentukan interval ini, Anda perlu membandingkan tiap tanggal pesanan ke tanggal pesanan lainnya untuk produk itu. Anda bisa membuat kueri yang memperlihatkan informasi ini dengan menggunakan templat database Northwind.

Perlihatkan pada saya cara mengatur Northwind

  1. Pada tab File, klik Baru.

  2. Di bawah Templat yang Tersedia, klik Templat Sampel.

  3. Klik Northwind, lalu klik Buat.

  4. Ikuti arahan pada halaman Northwind Traders (pada tab objek Layar Awal) untuk membuka database, lalu tutup jendela Dialog Login.

  1. Pada tab Buat, di grup Kueri, klik Desain Kueri.

  2. Dalam kotak dialog Perlihatkan Tabel, klik tab Kueri, lalu klik ganda Pesanan Produk.

  3. Tutup kotak dialog Perlihatkan Tabel.

  4. Klik ganda bidang ID Produk dan bidang Tanggal Pesanan untuk menambahkannya ke kisi desain kueri.

  5. Di baris Urutkan dari kolom kisi ID Produk, pilih Urutan Naik.

  6. Di baris Urutkan dari kolom kisi Tanggal Pesanan, pilih Urutan Turun.

  7. Di kolom ketiga dari kisi, klik kanan baris Bidang, lalu klik Zoom pada menu pintasan.

  8. Dalam kotak dialog Zoom, ketik atau tempel ekspresi berikut:

    Prior Date: (SELECT MAX([Order Date]) 
    FROM [Product Orders] AS [Old Orders]
    WHERE [Old Orders].[Order Date] < [Product Orders].[Order Date]
    AND [Old Orders].[Product ID] = [Product Orders].[Product ID])

Ekspresi ini adalah subkueri. Untuk setiap baris, subkueri memilih tanggal pesanan terbaru yang sedikit lebih lama dari tanggal pesanan yang terkait dengan baris. Perhatikan cara Anda menggunakan kata kunci AS untuk membuat alias tabel, sehingga Anda bisa membandingkan nilai di subkueri terhadap nilai di baris saat ini kueri utama.

  1. Di kolom keempat dari kisi, di baris Bidang, ketikkan ekspresi berikut:

    Interval: [Order Date]-[Prior Date]

Ekspresi ini menghitung interval antar masing-masing tanggal pesanan dan tanggal pesanan sebelumnya untuk produk tersebut, menggunakan nilai untuk tanggal sebelumnya yang kita tetapkan dengan menggunakan subkueri.

  1. Pada tab Desain, di grup Hasil, klik Jalankan.

    1. Kueri menjalankan dan menampilkan daftar nama produk, tanggal pesanan, tanggal pesanan sebelumnya, dan interval antar tanggal pesanan. Hasil diurutkan terlebih dahulu menurut ID Produk (dalam urutan naik), lalu Tanggal Pesanan (dalam urutan turun).

    2. Catatan: Karena ID Produk adalah bidang pencarian, secara default, Access menampilkan nilai pencarian (dalam kasus ini, nama produk), dan bukan ID Produk aktual. Meskipun hal ini mengubah nilai yang muncul, namun tidak mengubah susunan urutan.

  2. Tutup database Northwind.

Atas Halaman

Menggunakan subkueri sebagai kriteria untuk bidang kueri

Anda bisa menggunakan subkueri sebagai kriteria bidang. Menggunakan subkueri sebagai kriteria bidang saat Anda ingin menggunakan hasil subkueri untuk membatasi nilai yang menampilkan bidang.

Sebagai contoh, anggap Anda ingin meninjau daftar pesanan yang diproses oleh karyawan yang bukan perwakilan penjualan. Untuk menghasilkan daftar ini, Anda perlu membandingkan ID karyawan untuk setiap urutan dengan daftar ID karyawan untuk karyawan yang bukan perwakilan penjualan. Untuk membuat daftar ini dan menggunakannya sebagai kriteria bidang, Anda gunakan subkueri, seperti diperlihatkan dalam prosedur berikut:

  1. Buka database Northwind dan aktifkan kontennya.

  2. Tutup formulir masuk.

  3. Pada tab Buat, di grup Lainnya, klik Desain Kueri.

  4. Dalam kotak dialog Perlihatkan Tabel, pada tab Tabel, klik ganda Pesanan dan Karyawan.

  5. Tutup kotak dialog Perlihatkan Tabel.

  6. Di tabel Pesanan klik ganda bidang ID Karyawan, bidang ID Pesanan, dan bidang Tanggal Pesanan untuk menambahkannya ke kisi desain kueri. Di tabel Karyawan, klik ganda bidang Jabatan untuk menambahkannya ke kisi desain.

  7. Klik kanan baris Kriteria dari kolom ID Karyawan, lalu klik Zoom pada menu pintasan.

  8. Dalam kotak Zoom, ketik atau tempel ekspresi berikut:

    IN (SELECT [ID] FROM [Employees] 
    WHERE [Job Title]<>'Sales Representative')

    Ini adalah subkueri. Ekspresi ini memilih semua ID karyawan di mana karyawan tidak mempunyai jabatan Perwakilan Penjualan, dan menyuplai hasil yang diatur untuk kueri utama. Selanjutnya kueri utama memeriksa apakah ID karyawan dari tabel Pesanan berada di kumpulan hasil.

  9. Pada tab Desain, di grup Hasil, klik Jalankan.

    Kueri berjalan, dan hasil kueri memperlihatkan daftar pesanan yang diproses oleh karyawan yang bukan perwakilan penjualan.

Atas Halaman

Kata kunci SQL umum yang bisa Anda gunakan dengan subkueri

Terdapat beberapa kata kunci SQL yang bisa Anda gunakan dengan subkueri:

Catatan: Daftar ini tidaklah lengkap. Anda bisa menggunakan kata kunci SQL yang valid di subkueri, tidak termasuk kata kunci definisi data.

  • ALL    Gunakan ALL di klausa WHERE untuk mengambil baris yang memenuhi kondisi ketika dibandingkan dengan setiap baris yang dikembalikan subkueri.

    Sebagai contoh, anggap Anda menganalisis data siswa di perguruan tinggi. Siswa harus mempertahankan IPK minimum, yang berbeda-beda dari jurusan ke jurusan. Jurusan dan IPK minimumnya disimpan di tabel yang bernama Jurusan, dan informasi siswa yang relevan disimpan di tabel yang disebut Student_Records.

    Untuk melihat daftar jurusan (dan nilai IPK minimumnya) untuk setiap siswa yang jurusannya melampaui IPK minimum, Anda bisa menggunakan kueri berikut:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] < ALL
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);
  • ANY    Gunakan ANY di klausa WHERE untuk mengambil baris yang memenuhi kondisi saat dibandingkan terhadap sedikitnya satu baris yang dikembalikan oleh subkueri.

    Sebagai contoh, anggap Anda menganalisis data siswa di perguruan tinggi. Siswa harus mempertahankan IPK minimum, yang berbeda-beda dari jurusan ke jurusan. Jurusan dan IPK minimumnya disimpan di tabel yang bernama Jurusan, dan informasi siswa yang relevan disimpan di tabel yang disebut Student_Records.

    Untuk melihat daftar jurusan (dan nilai IPK minimumnya) untuk setiap siswa yang jurusannya tidak memenuhi IPK minimum, Anda bisa menggunakan kueri berikut:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] > ANY
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);

    Catatan: Anda juga bisa menggunakan kata kunci SOME untuk tujuan yang sama; kata kunci SOME sama dengan ANY.

  • EXISTS    Gunakan EXISTS di klausa WHERE untuk menunjukkan bahwa subkueri harus mengembalikan setidaknya satu baris. Anda juga bisa mengawali EXISTS dengan NOT untuk menunjukkan bahwa subkueri tidak harus mengembalikan baris.

    Sebagai contoh, kueri berikut mengembalikan daftar produk yang dikembalikan di setidaknya satu pesanan yang ada:

    SELECT *
    FROM [Products]
    WHERE EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);

    Penggunaan NOT EXISTS, kueri akan mengembalikan daftar produk yang tidak ditemukan di setidaknya satu pesanan yang ada:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • IN    Gunakan IN di klausa WHERE untuk memastikan bahwa nilai dalam baris sekarang dari kueri utama merupakan bagian dari kumpulan yang dikembalikan subkueri. Anda juga bisa mengawali IN dengan NOT, untuk memastikan bahwa nilai dalam baris sekarang dari kueri utama bukan bagian dari kumpulan yang dikembalikan subkueri.

    Sebagai contoh, kueri berikut mengembalikan daftar pesanan (beserta tanggal pesanan) yang diproses oleh karyawan yang bukan perwakilan penjualan:

    SELECT [Order ID], [Order Date]
    FROM [Orders]
    WHERE [Employee ID] IN
    (SELECT [ID] FROM [Employees]
    WHERE [Job Title]<>'Sales Representative');

    Dengan menggunakan NOT IN, Anda bisa menuliskan kueri yang sama dengan cara ini:

    SELECT [Order ID], [Order Date]
    FROM [Orders]
    WHERE [Employee ID] NOT IN
    (SELECT [ID] FROM [Employees]
    WHERE [Job Title]='Sales Representative');

Atas Halaman

Catatan: Penafian Terjemahan Mesin: Artikel ini telah diterjemahan oleh sistem komputer tanpa campur tangan manusia. Microsoft menawarkan terjemahan mesin ini untuk membantu pengguna yang bukan penutur bahasa Inggris agar dapat menikmati konten tentang produk, layanan, dan teknologi Microsoft. Karena artikel ini diterjemahkan oleh mesin, mungkin akan terdapat kesalahan kosa kata, sintaksis, atau tata bahasa.

Kembangkan keterampilan Anda
Jelajahi pelatihan
Dapatkan fitur baru terlebih dahulu
Gabung ke Office Insiders

Apakah informasi ini bermanfaat?

Terima kasih atas umpan balik Anda!

Terima kasih atas umpan balik Anda! Sepertinya menghubungkan Anda ke salah satu agen dukungan Office kami akan sangat membantu.

×