Menggunakan kueri gabungan untuk menggabungkan beberapa kueri menjadi satu hasil

Berlaku Untuk
Access untuk Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Terkadang, Anda mungkin ingin menggabungkan rekaman dari satu tabel atau kueri dengan catatan dari satu atau beberapa tabel lain menjadi satu hasil. Itulah yang dilakukan kueri gabungan di Access.

Untuk memahami kueri gabungan secara efektif, Anda harus terlebih dahulu mengetahui hal-hal terkait desain kueri pemilihan dasar di Access. Untuk mempelajari selengkapnya tentang mendesain kueri pemilihan, lihat Membuat kueri pemilihan sederhana.

Mempelajari contoh kueri gabungan yang dapat dimodifikasi

Jika Anda belum pernah membuat kueri gabungan sebelumnya, mungkin ada baiknya Anda mempelajari contoh kerja terlebih dahulu di templat Northwind Access. Anda dapat mencari templat sampel Northwind di halaman mulai Access dengan memilih File>Baru. Anda juga dapat mengunduh salinan langsung dari templat sampel Northwind.

Setelah Access membuka database Northwind, tutup kotak dialog masuk yang pertama kali muncul, lalu perluas Panel Navigasi. Pilih bagian atas Panel Navigasi, lalu pilih Tipe Objek untuk mengatur semua objek database berdasarkan jenisnya. Selanjutnya, perluas grup Kueri , dan Anda akan melihat kueri bernama Transaksi Produk.

Kueri gabungan mudah dibedakan dari objek kueri lain karena adanya ikon khusus yang menyerupai dua lingkaran terkait yang mewakili sebuah gabungan dari dua kumpulan:

Cuplikan layar ikon kueri gabungan di Access. Tidak seperti kueri pilih dan tindakan normal, tabel tidak terkait dalam kueri gabungan. Artinya, Anda tidak dapat menggunakan desainer kueri grafis Access untuk membuat atau mengedit kueri gabungan. Jika Anda membuka kueri gabungan dari Panel Navigasi, Access akan membukanya dan menampilkan hasilnya dalam tampilan lembar data. Di bawah tab Tampilan di Beranda , perhatikan bahwa Tampilan Desain tidak tersedia saat Anda bekerja dengan kueri serikat pekerja. Anda hanya dapat beralih antara Tampilan Lembar Data dan Tampilan SQL.

Untuk melanjutkan studi Anda tentang contoh kueri gabungan ini, klikTampilan Beranda>> SQLView untuk melihat SQL sintaks yang menentukannya. Dalam ilustrasi ini, kami telah menambahkan beberapa spasi tambahan sehingga SQL Anda dapat dengan mudah melihat berbagai bagian yang membentuk kueri gabungan.

Mari kita lihat SQL sintaks kueri gabungan ini dari database Northwind secara detail:


SELECT [Product ID], [Order Date], [Company Name], [Transaction], [Quantity]
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity]
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

Bagian pertama dan ketiga dari pernyataan SQL ini pada dasarnya adalah dua kueri pemilihan. Kueri-kueri ini mengambil dua kumpulan data yang berbeda, satu dari tabel Pesanan Produk dan yang lain dari tabel Pembelian Produk.

Bagian kedua dari pernyataan ini SQL adalah UNION kata kunci, yang memberi tahu Access untuk menggabungkan dua set rekaman ini.

Bagian terakhir dari pernyataan ini SQL menentukan urutan catatan yang digabungkan dengan menggunakan sebuah ORDER BY pernyataan. Dalam contoh ini, Access mengurutkan semua catatan berdasarkan bidang Tanggal Pesanan dalam urutan menurun.

Catatan

Kueri gabungan selalu bersifat baca saja di Access. Anda tidak dapat mengubah nilai apa pun dalam tampilan lembar data.

Membuat kueri gabungan dengan membuat dan menggabungkan kueri pemilihan

Meskipun Anda dapat membuat kueri gabungan dengan menulis SQL sintaks langsung dalam SQL View, Anda mungkin merasa lebih mudah untuk membangunnya dalam beberapa bagian dengan kueri tertentu. Anda kemudian dapat menyalin dan menempelkan bagian SQL ke dalam kueri gabungan yang telah digabungkan.

Jika tidak ingin membaca langkah-langkah dan ingin langsung menonton contoh yang tersedia, lihat bagian berikutnya, Menonton contoh pembuatan kueri gabungan.

  1. Pada tab Buat, di grup Kueri, klik Desain Kueri.
  2. Klik dua kali tabel yang berisi bidang yang ingin Anda sertakan. Tabel tersebut ditambahkan ke jendela desain kueri.
  3. Di jendela desain kueri, klik ganda tiap bidang yang ingin Anda sertakan. Saat Anda memilih bidang, pastikan bahwa Anda menambahkan jumlah bidang yang sama, dengan urutan yang sama, yang Anda tambahkan ke kueri pemilihan yang lain. Perhatikan dengan baik tipe data dari bidang, dan pastikan bidang-bidang tersebut memiliki tipe data yang kompatibel pada posisi yang sama di dalam kueri lain yang Anda gabungkan. Misalnya, jika kueri pemilihan pertama Anda memiliki lima bidang, bidang pertama berisi data tanggal/waktu, pastikan tiap kueri pemilihan yang lain yang Anda gabungkan juga memiliki lima bidang, dan bidang pertamanya berisi data tanggal/waktu, dan seterusnya.
  4. Sebagai alternatif, tambahkan kriteria ke bidang Anda dengan mengetikkan ekspresi yang tepat di baris Kriteria dari kisi bidang.
  5. Setelah selesai menambahkan bidang dan kriteria bidang, Anda harus menjalankan kueri pemilihan dan meninjau outputnya. Di tab Desain, dalam grup Hasil, klik Jalankan.
  6. Alihkan kueri tersebut ke tampilan Desain.
  7. Simpan kueri pemilihan tersebut, dan biarkan terbuka.
  8. Ulangi prosedur ini untuk tiap kueri pemilihan yang ingin Anda gabungkan.

Setelah membuat kueri pilihan, saatnya untuk menggabungkannya. Pada langkah ini, Anda membuat kueri gabungan dengan menyalin dan menempelkan SQL pernyataan.

  1. Di tab Buat, dalam grup Kueri, klik Desain Kueri.
  2. Pada tab Desain, dalam grup Kueri, klik Gabungan. Access menyembunyikan jendela desain kueri dan memperlihatkan tab objek SQL View . Pada titik ini, tab kosong.
  3. Klik tab untuk kueri pemilihan pertama yang ingin Anda gabungkan di dalam kueri gabungan.
  4. Pada tab Beranda , klik Tampilkan>SQL View.
  5. Salin SQL pernyataan untuk kueri pilih. Klik tab untuk kueri gabungan yang mulai Anda buat sebelumnya.
  6. Tempelkan SQL pernyataan untuk kueri pilih ke tab objek SQL View kueri gabungan.
  7. Hapus titik koma (;) di akhir pernyataan kueri SQL pilih.
  8. Tekan Enter untuk memindahkan kursor ke bawah satu baris, lalu ketik UNION pada baris baru.
  9. Klik tab untuk kueri pemilihan berikutnya yang ingin Anda gabungkan di dalam kueri gabungan.
  10. Ulangi langkah 5 hingga 10 hingga Anda telah menyalin dan menempelkan semua SQL pernyataan untuk kueri select ke jendela SQL View kueri gabungan. Jangan hapus titik koma atau ketik apa pun setelah SQL pernyataan untuk kueri pilihan terakhir.
  11. Pada tab Desain, di grup Hasil, klik Jalankan.

Hasil dari kueri gabungan akan muncul dalam tampilan Lembar Data.

Menonton contoh pembuatan kueri gabungan

Berikut adalah contoh yang dapat Anda buat ulang di database sampel Northwind. Kueri gabungan ini mengumpulkan nama orang-orang dari tabel Pelanggan dan menggabungkannya dengan nama orang-orang dari tabel Pemasok. Jika ingin mengikutinya, lakukan langkah-langkah ini dalam salinan contoh database Northwind Anda.

Berikut langkah-langkah yang diperlukan untuk membuat contoh ini:

  1. Buat dua kueri pemilihan yang disebut Kueri1 dan Kueri2 dengan tabel Pelanggan dan Pemasok sebagai sumber data masing-masing. Gunakan bidang Nama Depan dan Nama Belakang sebagai nilai tampilan.

  2. Buat kueri baru yang bernama Kueri3 tanpa sumber data awal, lalu klik perintah Gabungan pada tab Desain untuk menjadikan kueri ini kueri Gabungan.

  3. Salin dan tempelkan pernyataan SQL dari Kueri1 dan Kueri2 ke Kueri3. Pastikan untuk menghapus titik koma tambahan dan menambahkan UNION kata kunci. Lalu, Anda dapat memeriksa hasil dalam tampilan lembar data.

  4. Tambahkan klausa pemesanan ke salah satu kueri, lalu tempelkan pernyataan tersebut ORDER BY ke dalam kueri gabungan di SQL View. Perhatikan bahwa dalam Kueri3, kueri gabungan, saat pengurutan akan ditambahkan, pertama-tama titik koma dihapus, lalu nama tabel dari nama bidang.

  5. Final SQL yang menggabungkan dan mengurutkan nama untuk contoh kueri gabungan ini adalah sebagai berikut:

    SELECT Customers.Company, Customers.[Last Name], Customers.[First Name]
    FROM Customers
    
    UNION
    
    SELECT Suppliers.Company, Suppliers.[Last Name], Suppliers.[First Name]
    FROM Suppliers
    
    ORDER BY [Last Name], [First Name];
    

Jika Anda sangat nyaman menulis SQL sintaks, Anda dapat menulis pernyataan Anda sendiri SQL untuk kueri gabungan langsung di SQL View. Namun, sebaiknya Anda mengikuti pendekatan penyalinan dan penempelan SQL dari objek kueri lainnya. Setiap kueri dapat jauh lebih rumit dari contoh kueri pemilihan sederhana yang digunakan di sini. Sebaiknya Anda membuat dan menguji setiap kueri dengan hati-hati sebelum menggabungkannya dalam kueri gabungan. Jika kueri gabungan gagal dijalankan, Anda dapat menyesuaikan setiap kueri secara individual hingga berhasil dijalankan, lalu membuat kembali kueri gabungan dengan sintaks yang benar.

Tinjau bagian selanjutnya dalam artikel ini untuk mempelajari lebih banyak tips dan trik tentang menggunakan kueri gabungan.

Menggabungkan tiga atau lebih tabel dan kueri dalam kueri gabungan

Dalam contoh dari bagian sebelumnya yang menggunakan database Northwind, data dari hanya dua tabel yang digabungkan. Namun, Anda dapat menggabungkan tiga atau lebih tabel dalam kueri gabungan dengan mudah. Misalnya, jika menggunakan contoh sebelumnya, Anda juga dapat menyertakan nama karyawan dalam output kueri. Anda dapat menyelesaikan tugas tersebut dengan menambahkan kueri ketiga dan menggabungkannya dengan pernyataan SQL sebelumnya dan kata kunci UNION tambahan seperti ini:


SELECT Customers.Company, Customers.[Last Name], Customers.[First Name]
FROM Customers

UNION

SELECT Suppliers.Company, Suppliers.[Last Name], Suppliers.[First Name]
FROM Suppliers

UNION

SELECT Employees.Company, Employees.[Last Name], Employees.[First Name]
FROM Employees

ORDER BY [Last Name], [First Name];

Ketika Anda melihat hasil dalam tampilan lembar data, semua karyawan akan tercantum dengan contoh nama perusahaan, yang mungkin tidak terlalu berguna. Jika Anda ingin bidang tersebut menunjukkan apakah seseorang adalah karyawan internal, dari pemasok, atau dari pelanggan, Anda dapat menyertakan nilai tetap sebagai pengganti nama perusahaan. Berikut tampilannya SQL :


SELECT "Customer" As Employment, Customers.[Last Name], Customers.[First Name]
FROM Customers

UNION

SELECT "Supplier" As Employment, Suppliers.[Last Name], Suppliers.[First Name]
FROM Suppliers

UNION

SELECT "In-house" As Employment, Employees.[Last Name], Employees.[First Name]
FROM Employees

ORDER BY [Last Name], [First Name];

Berikut tampilan hasil yang akan muncul dalam tampilan lembar data. Access menampilkan kelima contoh data ini:

Pekerjaan Nama Belakang Nama Depan
Karyawan Kantor Faradilla Nadia
Karyawan Kantor Giyanti Larasati
Pemasok Giandra Surya
Pelanggan Gunawan Daniel
Pelanggan Galih Saputra Anton

Anda dapat mengurangi kueri lebih jauh lagi karena Access membaca nama bidang output hanya dari kueri pertama dalam kueri gabungan. Di sini, output dari bagian kueri kedua dan ketiga dihapus:


SELECT "Customer" As Employment, [Last Name], [First Name]
FROM Customers

UNION

SELECT "Supplier", [Last Name], [First Name]
FROM Suppliers

UNION

SELECT "In-house", [Last Name], [First Name]
FROM Employees

ORDER BY [Last Name], [First Name];

Pemfilteran dalam kueri gabungan

Dalam kueri gabungan Access, pemesanan hanya diperbolehkan sekali, tetapi Anda dapat memfilter setiap kueri satu per satu. Berdasarkan kueri gabungan bagian sebelumnya, berikut adalah contoh yang memfilter setiap kueri dengan menambahkan WHERE klausa.


SELECT "Customer" As Employment, Customers.[Last Name], Customers.[First Name]
FROM Customers
WHERE [State/Province] = "UT"

UNION

SELECT "Supplier", [Last Name], [First Name]
FROM Suppliers
WHERE [Job Title] = "Sales Manager"

UNION

SELECT "In-house", Employees.[Last Name], Employees.[First Name]
FROM Employees
WHERE City = "Seattle"

ORDER BY [Last Name], [First Name];

Beralihlah ke tampilan lembar data dan Anda akan melihat hasil yang mirip dengan ini:

Pekerjaan Nama Belakang Nama Depan
Pemasok Anggraeni Elisa A.
Karyawan Kantor Faradilla Nadia
Pelanggan Haryono Joni
Karyawan Kantor Hani Lesmana Anita
Pemasok Herlina Ernawati Amel
Pelanggan Maryanto Sandi
Pemasok Santoso Mikael
Pemasok Satria Laksmana
Karyawan Kantor Tantowi Syamsul
Pemasok Wijaya Citra
Karyawan Kantor Zainuddin Rian

Mencampur tipe data

Jika kueri yang Anda satukan sangat berbeda, Anda mungkin mengalami situasi di mana bidang output harus menggabungkan data dari tipe data yang berbeda. Jika demikian, kueri gabungan seringkali hanya mengembalikan hasil sebagai tipe data teks karena tipe data tersebut dapat berisi teks dan angka.

Untuk memahami cara kerjanya, kami akan menggunakan kueri gabungan Transaksi Produk dalam contoh database Northwind. Buka contoh database, lalu buka kueri Transaksi Produk dalam tampilan lembar data. Sepuluh data terakhir seharusnya mirip dengan output ini:

ID Produk Tanggal Pemesanan Nama Perusahaan Transaksi Jumlah
77 22/1/2006 Pemasok B Pembelian 60
80 22/1/2006 Pemasok D Pembelian 75
81 22/1/2006 Pemasok A Pembelian 125
81 22/1/2006 Pemasok A Pembelian 200
7 20/1/2006 Perusahaan D Penjualan 10
51 20/1/2006 Perusahaan D Penjualan 10
80 20/1/2006 Perusahaan D Penjualan 10
34 15/1/2006 Perusahaan AA Penjualan 100
80 15/1/2006 Perusahaan AA Penjualan 30

Anggap Anda ingin membagi bidang Kuantitas menjadi dua bidang: Beli dan Jual. Mari kita asumsikan juga bahwa Anda menginginkan nilai nol tetap untuk bidang tanpa nilai. Berikut tampilannya SQL untuk kueri serikat ini:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], 0 As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, 0 As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

Jika beralih ke tampilan lembar data, Anda akan melihat sepuluh data terakhir ditampilkan seperti berikut:

ID Produk Tanggal Pemesanan Nama Perusahaan Transaksi Beli Jual
74 22/1/2006 Pemasok B Pembelian 20 0
77 22/1/2006 Pemasok B Pembelian 60 0
80 22/1/2006 Pemasok D Pembelian 75 0
81 22/1/2006 Pemasok A Pembelian 125 0
81 22/1/2006 Pemasok A Pembelian 200 0
7 20/1/2006 Perusahaan D Penjualan 0 10
51 20/1/2006 Perusahaan D Penjualan 0 10
80 20/1/2006 Perusahaan D Penjualan 0 10
34 15/1/2006 Perusahaan AA Penjualan 0 100
80 15/1/2006 Perusahaan AA Penjualan 0 30

Melanjutkan contoh ini, bagaimana jika Anda ingin bidang dengan nilai nol kosong? Anda dapat mengubah SQL untuk menampilkan tidak menampilkan apa-apa, bukan nol dengan menambahkan Null kata kunci, seperti yang diperlihatkan di sini:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], Null As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, Null As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

Namun, seperti yang dapat dilihat jika beralih ke tampilan lembar data, kini Anda memiliki hasil yang tidak terduga. Dalam kolom Beli, setiap bidang kosong:

ID Produk Tanggal Pemesanan Nama Perusahaan Transaksi Beli Jual
74 22/1/2006 Pemasok B Pembelian
77 22/1/2006 Pemasok B Pembelian
80 22/1/2006 Pemasok D Pembelian
81 22/1/2006 Pemasok A Pembelian
81 22/1/2006 Pemasok A Pembelian
7 20/1/2006 Perusahaan D Penjualan 10
51 20/1/2006 Perusahaan D Penjualan 10
80 20/1/2006 Perusahaan D Penjualan 10
34 15/1/2006 Perusahaan AA Penjualan 100
80 15/1/2006 Perusahaan AA Penjualan 30

Hal ini terjadi karena Access menentukan tipe data bidang dari kueri pertama. Dalam contoh ini, Null bukanlah angka.

Jadi apa yang terjadi jika Anda mencoba menyisipkan string kosong untuk nilai kosong bidang? Untuk SQL upaya ini mungkin terlihat seperti ini:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], "" As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, "" As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

Ketika beralih ke tampilan lembar data, Anda akan melihat bahwa Access mengambil nilai Beli, tetapi mengonversi nilai tersebut menjadi teks. Anda dapat mengetahui bahwa ini adalah nilai teks karena sejajar ke kiri dalam tampilan lembar data. String kosong dalam kueri pertama bukanlah angka, itulah sebabnya Anda melihat hasil ini. Anda juga akan melihat bahwa nilai Jual juga dikonversi menjadi teks karena catatan pembelian berisi string kosong.

ID Produk Tanggal Pemesanan Nama Perusahaan Transaksi Beli Jual
74 22/1/2006 Pemasok B Pembelian 20
77 22/1/2006 Pemasok B Pembelian 60
80 22/1/2006 Pemasok D Pembelian 75
81 22/1/2006 Pemasok A Pembelian 125
81 22/1/2006 Pemasok A Pembelian 200
7 20/1/2006 Perusahaan D Penjualan 10
51 20/1/2006 Perusahaan D Penjualan 10
80 20/1/2006 Perusahaan D Penjualan 10
34 15/1/2006 Perusahaan AA Penjualan 100
80 15/1/2006 Perusahaan AA Penjualan 30

Lalu, bagaimana cara memecahkan teka-teki ini?

Salah satu solusinya adalah memaksa kueri untuk mengharapkan nilai bidang menjadi angka. Anda dapat melakukannya dengan ekspresi ini:


IIf(False, 0, Null)

Kondisi untuk memeriksa, False, tidak pernah True, sehingga ekspresi selalu mengembalikan Null. Namun, Access masih mengevaluasi kedua opsi output dan memperlakukan output sebagai numerik atau Null.

Berikut cara menggunakan ekspresi ini dalam contoh yang dapat dimodifikasi:


SELECT [Product ID], [Order Date], [Company Name], [Transaction], IIf(False, 0, Null) As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, Null As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

Anda tidak perlu mengubah kueri kedua.

Jika beralih ke tampilan lembar data, Anda akan melihat hasil yang diinginkan:

ID Produk Tanggal Pemesanan Nama Perusahaan Transaksi Beli Jual
74 22/1/2006 Pemasok B Pembelian 20
77 22/1/2006 Pemasok B Pembelian 60
80 22/1/2006 Pemasok D Pembelian 75
81 22/1/2006 Pemasok A Pembelian 125
81 22/1/2006 Pemasok A Pembelian 200
7 20/1/2006 Perusahaan D Penjualan 10
51 20/1/2006 Perusahaan D Penjualan 10
80 20/1/2006 Perusahaan D Penjualan 10
34 15/1/2006 Perusahaan AA Penjualan 100
80 15/1/2006 Perusahaan AA Penjualan 30

Metode alternatif untuk mendapatkan hasil yang sama adalah menambahkan kueri dalam kueri gabungan dengan kueri lainnya pada bagian awal:

SELECT
  0 As [Product ID], Date() As [Order Date],
  "" As [Company Name], "" As [Transaction],
  0 As Buy, 0 As Sell
FROM [Product Orders]
WHERE False

Untuk setiap bidang, Access mengembalikan nilai tetap dari tipe data yang ditentukan. Tentu saja, Anda tidak ingin output kueri ini mengganggu hasilnya, sehingga Anda perlu menyertakan klausul WHERE ke False:

WHERE False

Ini adalah trik kecil. Karena kondisinya selalu salah, kueri tidak mengembalikan apa pun. Gabungkan pernyataan ini dengan SQL yang ada dan pernyataan lengkap telah berhasil dibuat, yaitu:

SELECT
  0 As [Product ID], Date() As [Order Date],
  "" As [Company Name], "" As [Transaction],
  0 As Buy, 0 As Sell
FROM [Product Orders]
WHERE False

UNION

SELECT [Product ID], [Order Date], [Company Name], [Transaction], Null As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, Null As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

Catatan

Dalam contoh ini, kueri gabungan dalam database Northwind mengembalikan 100 catatan, sementara dua kueri individual menghasilkan 58 dan 43 catatan untuk total 101 catatan. Perbedaan ini terjadi karena dua rekaman tidak unik. Lihat Bekerja dengan catatan yang berbeda dalam kueri gabungan menggunakan UNION ALL untuk mempelajari cara mengatasi skenario ini dengan menggunakan UNION ALL.

Menambahkan total dalam kueri gabungan

Kegunaan khusus untuk kueri gabungan adalah menggabungkan sekumpulan rekaman dengan satu rekaman yang berisi jumlah satu atau beberapa bidang.

Berikut contoh lain yang dapat Anda buat dalam contoh database Northwind untuk menunjukkan cara mendapatkan total dalam kueri gabungan.

  1. Buat kueri sederhana baru untuk menampilkan pembelian bir (ID Produk=34 dalam database Northwind) menggunakan sintaks SQL berikut:

    SELECT [Purchase Order Details].[Date Received], [Purchase Order Details].Quantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
    
    ORDER BY [Purchase Order Details].[Date Received];
    
  2. Beralihlah ke tampilan lembar data, dan Anda akan melihat empat pembelian:

    Tanggal Diterima Jumlah
    22/1/2006 100
    22/1/2006 60
    4/4/2006 50
    5/4/2006 300
  3. Untuk mendapatkan total, buat kueri agregasi sederhana menggunakan SQL berikut:

    SELECT Max([Date Received]), Sum([Quantity]) AS SumOfQuantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
    
  4. Beralihlah ke tampilan lembar data, dan Anda akan melihat satu data saja:

    MaksTanggal Diterima TotalJumlah
    5/4/2006 510
  5. Gabungkan kedua kueri ini ke dalam kueri gabungan untuk menambahkan data dengan total kuantitas ke data pembelian:

    SELECT [Purchase Order Details].[Date Received], [Purchase Order Details].Quantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
    
    UNION
    
    SELECT Max([Date Received]), Sum([Quantity]) AS SumOfQuantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
    
    ORDER BY [Purchase Order Details].[Date Received];
    
  6. Beralihlah ke tampilan lembar data, dan Anda akan melihat empat pembelian dengan jumlah masing-masing, diikuti dengan data yang menjumlahkan kuantitas:

    Tanggal Diterima Jumlah
    22/1/2006 60
    22/1/2006 100
    4/4/2006 50
    5/4/2006 300
    5/4/2006 510

Penjelasan di atas mencakup dasar-dasar menambahkan total ke kueri gabungan. Anda mungkin juga ingin menyertakan nilai tetap di kedua kueri seperti "Detail" dan "Total" untuk memisahkan total catatan dari catatan lainnya secara visual. Anda dapat meninjau penggunaan nilai tetap dalam bagian Menggabungkan tiga atau lebih tabel dan kueri dalam kueri gabungan.

Bekerja dengan data yang berbeda dalam kueri gabungan menggunakan UNION ALL

Kueri gabungan di Access secara default hanya menyertakan data yang berbeda. Namun, bagaimana jika Anda ingin menyertakan semua data? Contoh lain mungkin berguna di sini.

Dalam bagian sebelumnya, kami menunjukkan cara membuat total dalam kueri gabungan. Ubah kueri SQL gabungan tersebut untuk menyertakan Product ID = 48:


SELECT [Purchase Order Details].[Date Received], [Purchase Order Details].Quantity
FROM [Purchase Order Details]
WHERE ((([Purchase Order Details].[Product ID])=48))

UNION

SELECT Max([Date Received]), Sum([Quantity]) AS SumOfQuantity
FROM [Purchase Order Details]
WHERE ((([Purchase Order Details].[Product ID])=48))

ORDER BY [Purchase Order Details].[Date Received];

Beralihlah ke tampilan lembar data, dan Anda akan melihat hasil yang cenderung kurang tepat:

Tanggal Diterima Jumlah
22/1/2006 100
22/1/2006 200

Tentu saja, satu rekaman tidak menghasilkan dua kali jumlah total.

Anda melihat hasil ini karena, dalam satu hari, jumlah cokelat yang sama terjual dua kali, seperti yang tercatat dalam tabel Detail Pesanan Pembelian. Berikut hasil kueri pemilihan sederhana yang menampilkan kedua data dalam contoh database Northwind:

ID Pesanan Pembelian Produk Jumlah
100 Northwind Traders Chocolate 100
92 Northwind Traders Chocolate 100

Dalam kueri gabungan yang disebutkan sebelumnya, Anda dapat melihat bahwa bidang ID Pesanan Pembelian tidak disertakan dan kedua bidang tersebut tidak membentuk dua rekaman yang berbeda.

Jika Anda ingin menyertakan semua catatan, gunakan UNION ALL alih-alih UNION di SQL. Hal ini kemungkinan besar akan memengaruhi pengurutan hasil, jadi Anda mungkin juga ingin menyertakan ORDER BY klausa untuk menentukan urutan pengurutan. Berikut yang diubah SQL berdasarkan contoh sebelumnya:


SELECT [Purchase Order Details].[Date Received], Null As [Total], [Purchase Order Details].Quantity
FROM [Purchase Order Details]
WHERE ((([Purchase Order Details].[Product ID])=48))

UNION ALL

SELECT Max([Date Received]), "Total" As [Total], Sum([Quantity]) AS SumOfQuantity
FROM [Purchase Order Details]
WHERE ((([Purchase Order Details].[Product ID])=48))

ORDER BY [Total];

Beralihlah ke tampilan lembar data, dan selain total, Anda akan melihat semua detail sebagai data terakhir:

Tanggal Diterima Total Jumlah
22/1/2006 100
22/1/2006 100
22/1/2006 Total 200

Menggunakan kueri gabungan untuk memfilter data dalam formulir melalui kontrol kotak kombo

Kueri gabungan sering digunakan sebagai sumber data untuk kontrol kotak kombo pada formulir. Anda dapat menggunakan kotak kombo tersebut untuk memilih nilai guna memfilter data formulir. Misalnya, memfilter data karyawan menurut kota mereka.

Guna mengetahui cara kerjanya, berikut contoh lain yang dapat Anda buat dalam contoh database Northwind untuk menjelaskan skenario ini.

  1. Buat kueri pilih sederhana dengan menggunakan sintaks ini SQL :

    SELECT Employees.City, Employees.City AS Filter
    FROM Employees;
    
  2. Beralihlah ke tampilan lembar data, dan Anda akan melihat hasil berikut:

    Kota Filter
    Semarang Semarang
    Bandung Bandung
    Rembang Rembang
    Kediri Kediri
    Semarang Semarang
    Rembang Rembang
    Semarang Semarang
    Rembang Rembang
    Semarang Semarang
  3. Saat mengamati hasil tersebut, Anda mungkin tidak melihat banyak nilai. Namun, perluas kueri dan ubah menjadi kueri gabungan dengan menggunakan hal berikut SQL:

    SELECT Employees.City, Employees.City AS Filter
    FROM Employees
    
    UNION
    
    SELECT "<All>", "*" AS Filter
    FROM Employees
    
    ORDER BY City;
    
  4. Beralihlah ke tampilan lembar data, dan Anda akan melihat hasil berikut:

    Kota Filter
    <Semua> *
    Bandung Bandung
    Kediri Kediri
    Rembang Rembang
    Semarang Semarang

    Access melakukan penyatuan sembilan rekaman, yang ditampilkan sebelumnya, dengan nilai bidang tetap Semua <> dan "*". Karena klausa gabungan ini tidak berisi UNION ALL, Access hanya mengembalikan catatan yang berbeda. Itu berarti setiap kota dikembalikan hanya sekali dengan nilai identik tetap.

  5. Setelah memiliki kueri gabungan lengkap yang menampilkan nama kota sekali saja beserta opsi yang memilih semua kota dengan efektif, Anda dapat menggunakan kueri ini sebagai sumber data untuk kotak kombo pada formulir. Dengan menggunakan contoh ini sebagai model, Anda dapat membuat kontrol kotak kombo pada formulir, mengatur kueri ini sebagai sumber datanya, mengatur properti Lebar Kolom dari kolom Filter menjadi 0 (nol) untuk menyembunyikannya secara visual, lalu mengatur properti Kolom Terikat menjadi 1 untuk menunjukkan indeks kolom kedua. Di Filter properti formulir itu sendiri, Anda kemudian dapat menambahkan kode seperti berikut ini untuk mengaktifkan filter formulir menggunakan nilai yang dipilih dalam kontrol kotak kombo:

    Me.Filter = "[City] Like '" & Me![FilterComboBoxName].Value & "'"
    Me.FilterOn = True
    

    Pengguna formulir kemudian dapat memfilter catatan formulir ke nama kota tertentu atau memilih <Semua> untuk mencantumkan semua catatan untuk semua kota.

Atas Halaman