Menggunakan kueri gabungan untuk menggabungkan beberapa kueri ke dalam satu hasil

Menggunakan kueri gabungan untuk menggabungkan beberapa kueri ke dalam satu hasil

Catatan:  Kami ingin secepatnya menyediakan konten bantuan terbaru dalam bahasa Anda. Halaman ini diterjemahkan menggunakan mesin dan mungkin terdapat kesalahan tata bahasa atau masalah keakuratan. Kami bertujuan menyediakan konten yang bermanfaat untuk Anda. Dapatkah Anda memberi tahu kami apakah informasi ini bermanfaat untuk Anda di bagian bawah halaman ini? Berikut artikel dalam bahasa Inggris untuk referensi.

Kadang-kadang Anda mungkin ingin daftar rekaman dari satu tabel atau kueri dengan orang-orang dari satu atau lebih tabel untuk membentuk satu set rekaman - daftar dengan semua rekaman dari dua atau beberapa tabel. Ini adalah tujuan kueri gabungan di Access.

Untuk secara efektif memahami kueri gabungan, Anda terlebih dahulu harus terbiasa dengan mendesain kueri pemilihan dasar dalam Access. Untuk mempelajari selengkapnya tentang mendesain kueri pemilihan, lihat membuat kueri pemilihan sederhana.

Catatan:  Konten di artikel ini ditujukan untuk penggunaan dengan database desktop Access. Anda tidak dapat membuat atau menggunakan kueri gabungan di database web Access atau aplikasi web Access.

Mempelajari contoh kerjanya kueri gabungan

Jika Anda tidak pernah membuat kueri gabungan sebelum, Anda mungkin akan berguna untuk pertama studi contoh kerjanya di Templat Northwind Access. Anda bisa mencari Templat sampel Northwind pada halaman memulai memulai Access dengan mengklik File > baru atau Anda bisa langsung mengunduh salinan dari lokasi ini: Northwind sampel Templat.

Setelah Access membuka Northwind database, menghilangkan formulir dialog masuk yang pertama muncul, lalu Perluas panel navigasi. Klik bagian atas panel navigasi dan lalu pilih Tipe objek untuk menata semua objek database menurut tipe mereka. Berikutnya, Perluas grup kueri , dan Anda akan melihat kueri yang disebut Produk transaksi.

Kueri gabungan mudah untuk membedakan dari objek kueri lain karena mereka memiliki ikon khusus yang terlihat seperti dua lingkaran saling terkait yang mewakili sekumpulan united dari dua set:

Cuplikan layar ikon kueri gabungan di Access.

Tidak seperti pilih normal dan kueri tindakan, tabel tidak terkait dalam kueri gabungan, yang berarti akses desainer kueri grafis tidak digunakan untuk membuat atau mengedit kueri gabungan. Anda akan mengalami ini jika Anda membuka kueri gabungan dari panel navigasi; Access membuka dan menampilkan hasil dalam tampilan lembar data. Di bawah tampilan perintah pada tab Beranda , Anda akan melihat Tampilan desain tidak tersedia saat Anda bekerja dengan kueri gabungan. Anda hanya bisa beralih antara Tampilan lembar data dan SQL saat bekerja dengan kueri gabungan.

Untuk melanjutkan mempelajari contoh kueri gabungan ini, klik Beranda > tampilan > Tampilan SQL untuk menampilkan sintaks SQL yang menentukan itu. Dalam ilustrasi ini, kami telah menambahkan beberapa spasi ekstra di SQL sehingga Anda bisa dengan mudah melihat berbagai bagian yang menyusun kueri gabungan.

Contoh visual dari kueri gabungan dalam tampilan SQL dari Templat Access sampel Northwind.

Mari kita mempelajari sintaks SQL dari kueri gabungan ini dari database Northwind 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;

Pertama dan bagian ketiga dari pernyataan SQL yang dasarnya dua kueri pemilihan. Kueri ini mengambil dua kumpulan catatan; yang berbeda salah satu dari tabel Pesanan produk dan salah satu dari tabel Produk Pembelian .

Bagian kedua pernyataan SQL ini adalah kata kunci UNION yang memberitahu akses kueri ini akan menggabungkan kedua set rekaman.

Bagian terakhir dari pernyataan SQL ini menentukan urutan catatan yang digabungkan dengan menggunakan URUTKAN menurut pernyataan. Dalam contoh ini, Access akan Mengurutkan semua catatan dengan bidang tanggal pesanan dalam urutan turun.

Catatan: Kueri gabungan selalu bersifat baca-saja di Access; Anda tidak bisa mengubah setiap nilai dalam tampilan lembar data.

Membuat kueri gabungan dengan membuat dan menggabungkan kueri pemilihan

Meskipun Anda bisa membuat kueri gabungan dengan langsung menulis sintaks SQL dalam tampilan SQL, Anda mungkin mendapati lebih mudah untuk menyusun di bagian dengan kueri pemilihan. Anda bisa lalu salin dan tempelkan bagian SQL ke dalam kueri gabungan yang digabungkan.

Jika Anda ingin untuk melewati Baca langkah-langkah dan sebagai gantinya Tonton contoh, lihat bagian berikutnya, Tonton contoh menyusun kueri gabungan.

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

  2. Di dalam kotak dialog Perlihatkan Tabel, klik ganda tabel yang memiliki bidang yang ingin Anda sertakan. Tabel tersebut ditambahkan ke jendela desain kueri.

  3. Tutup kotak dialog Perlihatkan Tabel.

  4. Di jendela desain kueri, klik ganda setiap bidang yang ingin Anda sertakan. Saat Anda memilih bidang, pastikan bahwa Anda menambahkan jumlah yang sama dari bidang, dalam urutan yang sama, yang Anda tambahkan ke kueri pemilihan lainnya. Perhatikan tipe data bidang, dan pastikan bahwa mereka memiliki tipe data yang kompatibel dengan bidang di posisi yang sama dalam kueri lain yang Anda menggabungkan. Misalnya, jika kueri pemilihan pertama Anda memiliki bidang lima, pertama yang berisi data tanggal/waktu, pastikan bahwa tiap kueri pemilihan lain yang Anda menggabungkan juga memiliki lima bidang, pertama yang berisi data tanggal/waktu, dan lain sebagainya.

  5. Secara opsional, tambahkan kriteria ke bidang Anda dengan mengetik ekspresi yang sesuai di baris kriteria dari kisi bidang.

  6. Setelah selesai menambahkan bidang dan kriteria bidang, Anda harus menjalankan kueri pemilihan dan meninjau outputnya. Di tab Desain, dalam grup Hasil, klik Jalankan.

  7. Alihkan kueri tersebut ke tampilan Desain.

  8. Simpan kueri pemilihan tersebut, dan biarkan terbuka.

  9. Ulangi prosedur ini untuk tiap kueri pemilihan yang ingin Anda gabungkan.

Sekarang setelah Anda membuat kueri pemilihan Anda, kini waktunya untuk menggabungkan mereka. Dalam langkah ini, Anda membuat kueri gabungan dengan menyalin dan menempelkan pernyataan SQL.

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

  2. Tutup kotak dialog Perlihatkan Tabel.

  3. Pada tab desain , di grup kueri , klik gabungan. Akses menyembunyikan jendela desain kueri, dan memperlihatkan tab objek tampilan SQL. Pada titik ini, tab objek tampilan SQL kosong.

  4. Klik tab untuk kueri pemilihan pertama yang ingin Anda gabungkan di dalam kueri gabungan.

  5. Di tab Beranda, klik Tampilan > Tampilan SQL.

  6. Salin pernyataan SQL untuk kueri pemilihan. Klik tab untuk kueri gabungan yang Anda mulai membuat versi yang lebih lama.

  7. Tempelkan pernyataan SQL untuk kueri pemilihan ke dalam tab objek tampilan SQL dari kueri gabungan.

  8. Hapus tanda titik koma (;) di akhir pernyataan SQL kueri pemilihan.

  9. Tekan Enter untuk memindahkan kursor satu baris ke bawah, lalu ketik UNION pada baris baru.

  10. Klik tab untuk kueri pemilihan berikutnya yang ingin Anda gabungkan di dalam kueri gabungan.

  11. Ulangi langkah 5 sampai 10 sampai Anda selesai menyalin dan menempelkan semua pernyataan SQL untuk kueri pemilihan ke dalam jendela tampilan SQL dari kueri gabungan. Jangan menghapus tanda titik koma atau mengetikkan apa pun setelah pernyataan SQL untuk kueri pemilihan terakhir.

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

Hasil dari kueri gabungan Anda muncul dalam tampilan lembar data.

Tonton contoh menyusun kueri gabungan

Berikut adalah contoh yang Anda dapat membuat ulang dalam contah database Northwind. Kueri gabungan ini mengumpulkan nama orang dari tabel pelanggan dan menggabungkan mereka dengan nama-nama orang-orang dari pemasok tabel. Jika Anda ingin mengikutinya, bekerja melalui langkah-langkah dalam salinan contah database Northwind.

Contoh visual menyusun kueri gabungan dalam Templat Access sampel Northwind.

Berikut adalah langkah-langkah yang diperlukan untuk membuat contoh ini:

  1. Membuat kueri pemilihan dua disebut Query1 Query2 dengan tabel pelanggan dan produk masing-masing sebagai sumber data. Gunakan bidang nama depan dan nama belakang saat menampilkan nilai.

  2. Membuat kueri baru disebut Query3 dengan sumber data tanpa awalnya dan lalu klik perintah gabungan pada tab desain untuk membuat kueri ini ke dalam kueri gabungan.

  3. Salin dan tempelkan pernyataan SQL dari Query1 dan Query2 ke Query3. Pastikan untuk menghapus tanda titik koma tambahan dan menambahkan dalam kata kunci UNION. Anda lalu bisa memeriksa hasil Anda dalam tampilan lembar data.

  4. Tambahkan klausa memesan ke salah satu dari kueri dan kemudian tempelkan pernyataan URUTKAN menurut ke kueri gabungan tampilan SQL. Perhatikan bahwa di Query3, kueri gabungan, ketika Pemesanan akan ditambahkan, pertama-tama titik koma dihapus, lalu Namai tabel dari nama bidang.

  5. Akhir SQL yang menggabungkan dan mengurutkan nama untuk kueri gabungan contoh 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 telah terbiasa sangat menulis sintaks SQL, Anda pasti bisa menulis SQL Anda sendiri pernyataan untuk kueri gabungan secara langsung ke dalam SQL Tampilkan. Namun, Anda mungkin menemukan itu berguna untuk mengikuti pendekatan menyalin dan menempelkan SQL dari kueri objek lain. Setiap kueri bisa lebih rumit dari contoh kueri pemilihan sederhana yang digunakan di sini. Dapat keuntungan Anda untuk membuat dan uji setiap kueri dengan hati-hati sebelum menggabungkannya dalam kueri gabungan. Jika kueri gabungan gagal dijalankan, Anda bisa menyesuaikan setiap kueri secara individual sampai berhasil dan lalu menyusun ulang kueri gabungan Anda dengan sintaks diperbaiki.

Tinjau bagian tersisa artikel ini untuk mempelajari selengkapnya tips dan trik tentang menggunakan kueri gabungan.

Dalam contoh dari bagian sebelumnya menggunakan Northwind database, hanya data dari dua tabel digabungkan. Namun, Anda bisa menggabungkan tiga atau lebih tabel sangat mudah dalam kueri gabungan. Sebagai contoh, bangunan pada contoh sebelumnya, Anda mungkin ingin juga menyertakan nama karyawan dalam output kueri. Anda bisa menyelesaikan tugas tersebut dengan menambahkan kueri ketiga dan menggabungkan dengan pernyataan SQL sebelumnya dengan 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];

Saat Anda melihat hasil dalam tampilan lembar data, Semua karyawan akan dicantumkan dengan contoh nama perusahaan, yang mungkin tidak sangat berguna. Jika Anda ingin bidang itu untuk menunjukkan apakah orang karyawan internal, pemasok, atau pelanggan, Anda bisa menyertakan tetap nilai sebagai ganti nama perusahaan. Berikut ini bagaimana SQL akan terlihat seperti:

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 ini cara hasilnya muncul di tampilan lembar data. Access menampilkan catatan lima contoh ini:

Pekerjaan

Nama Belakang

Nama Depan

Internal

Freehafer

Nancy

Internal

Giussani

Laura

Pemasok

Glasson

Stuart

Pelanggan

Goldschmidt

Daniel

Pelanggan

Gratacos Solsona

Antonio

Kueri di atas dapat dikurangi lebih jauh karena Access hanya membaca nama bidang output dari kueri pertama dalam kueri gabungan. Di sini Anda melihat kami telah dihapus output dari kueri kedua dan ketiga bagian:

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];

Dalam kueri gabungan Access, pengurutan yang diperbolehkan hanya sekali tetapi setiap kueri yang bisa difilter secara individual. Bangunan pada bagian sebelumnya kueri gabungan, berikut ini contoh di mana kita telah difilter setiap kueri dengan menambahkan klausa WHERE.

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];

Beralih ke lembar data tampilan dan Anda akan melihat hasil mirip seperti ini:

Pekerjaan

Nama Belakang

Nama Depan

Pemasok

Andersen

Elizabeth A.

Internal

Freehafer

Nancy

Pelanggan

Hasselberg

Jonas

Internal

Hellung-Larsen

Anne

Pemasok

Hernandez-Echevarria

Amaya

Pelanggan

Mortensen

Sven

Pemasok

Sandberg

Mikael

Pemasok

Sousa

Luis

Internal

Thorpe

Steven

Pemasok

Weiler

Cornelia

Internal

Zare

Robert

Jika kueri untuk union sangat berbeda, Anda mungkin mengalami situasi di mana bidang output yang harus mengkombinasikan data dari tipe data yang berbeda. Jika demikian, kueri gabungan paling sering akan mengembalikan hasil sebagai data teks ketik sejak tipe data bisa tahan kedua teks dan angka.

Untuk memahami cara kerjanya, kita akan menggunakan kueri gabungan Transaksi produk dalam contah database Northwind. Buka database contoh itu dan lalu buka kueri produk transaksi dalam tampilan lembar data. Catatan terakhir sepuluh harus serupa output ini:

ID Produk

Tanggal pesanan

Nama perusahaan

Transaksi

Jumlah

77

1/22/2006

Pemasok B

Pembelian

60

80

1/22/2006

Pemasok D

Pembelian

75

81

1/22/2006

Pemasok A

Pembelian

125

81

1/22/2006

Pemasok A

Pembelian

200

7

1/20/2006

Perusahaan D

Penjualan

10

51

1/20/2006

Perusahaan D

Penjualan

10

80

1/20/2006

Perusahaan D

Penjualan

10

34

1/15/2006

Perusahaan AA

Penjualan

100

80

1/15/2006

Perusahaan AA

Penjualan

30

Mari kita berasumsi Anda inginkan jumlah bidang terpisah menjadi dua - Beli dan menjual. Mari kita juga anggaplah Anda ingin agar tetap nilai untuk bidang dengan nilai nol. Berikut ini adalah tampilan SQL untuk kueri gabungan 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 Anda beralih ke tampilan lembar data, Anda akan melihat catatan terakhir sepuluh sekarang ditampilkan seperti yang berikut ini:

ID Produk

Tanggal pesanan

Nama perusahaan

Transaksi

Beli

Menjual

74

1/22/2006

Pemasok B

Pembelian

20

0

77

1/22/2006

Pemasok B

Pembelian

60

0

80

1/22/2006

Pemasok D

Pembelian

75

0

81

1/22/2006

Pemasok A

Pembelian

125

0

81

1/22/2006

Pemasok A

Pembelian

200

0

7

1/20/2006

Perusahaan D

Penjualan

0

10

51

1/20/2006

Perusahaan D

Penjualan

0

10

80

1/20/2006

Perusahaan D

Penjualan

0

10

34

1/15/2006

Perusahaan AA

Penjualan

0

100

80

1/15/2006

Perusahaan AA

Penjualan

0

30

Melanjutkan contoh ini, bagaimana jika Anda ingin bidang dengan nol menjadi kosong? Anda bisa memodifikasi SQL untuk menampilkan apa pun dan bukan nol dengan menambahkan kunci nol seperti yang berikut ini:

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, saat Anda mungkin telah mengamati beralih ke tampilan lembar data, Anda sekarang memiliki hasil yang tidak diharapkan. Di kolom beli, setiap bidang dikosongkan:

ID Produk

Tanggal pesanan

Nama perusahaan

Transaksi

Beli

Menjual

74

1/22/2006

Pemasok B

Pembelian

77

1/22/2006

Pemasok B

Pembelian

80

1/22/2006

Pemasok D

Pembelian

81

1/22/2006

Pemasok A

Pembelian

81

1/22/2006

Pemasok A

Pembelian

7

1/20/2006

Perusahaan D

Penjualan

10

51

1/20/2006

Perusahaan D

Penjualan

10

80

1/20/2006

Perusahaan D

Penjualan

10

34

1/15/2006

Perusahaan AA

Penjualan

100

80

1/15/2006

Perusahaan AA

Penjualan

30

Ini terjadi alasannya karena Access menentukan tipe data bidang dari kueri pertama. Dalam contoh ini, Null bukan angka.

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

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;

Saat Anda beralih ke tampilan lembar data, Anda akan melihat bahwa akses mengambil nilai beli, tapi dikonversi nilai ke teks. Anda bisa mengetahui ini adalah nilai teks karena mereka rata kiri dalam tampilan lembar data. String kosong dalam kueri pertama bukan angka yang mengapa Anda melihat hasil ini. Anda juga akan melihat bahwa nilai menjual juga dikonversi menjadi teks karena pembelian catatan berisi string kosong.

ID Produk

Tanggal pesanan

Nama perusahaan

Transaksi

Beli

Menjual

74

1/22/2006

Pemasok B

Pembelian

20

77

1/22/2006

Pemasok B

Pembelian

60

80

1/22/2006

Pemasok D

Pembelian

75

81

1/22/2006

Pemasok A

Pembelian

125

81

1/22/2006

Pemasok A

Pembelian

200

7

1/20/2006

Perusahaan D

Penjualan

10

51

1/20/2006

Perusahaan D

Penjualan

10

80

1/20/2006

Perusahaan D

Penjualan

10

34

1/15/2006

Perusahaan AA

Penjualan

100

80

1/15/2006

Perusahaan AA

Penjualan

30

Jadi bagaimana Anda menyelesaikan puzzle ini?

Solusi adalah untuk memberlakukan kueri untuk setiap nilai bidang menjadi angka. Yang bisa dicapai dengan ekspresi:

IIf(False, 0, Null)

Kondisi untuk memeriksa, False, akan True, jadi ekspresi akan selalu mengembalikan kosong, tapi Access masih mengevaluasi opsi output kedua dan memutuskan output numerik atau Null.

Berikut ini bagaimana kami menggunakan ekspresi ini di contoh kami bekerja:

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;

Perhatikan bahwa tidak diperlukan untuk memodifikasi kueri kedua.

Jika Anda beralih ke tampilan lembar data, sekarang Anda akan melihat hasil yang kami ingin:

ID Produk

Tanggal pesanan

Nama perusahaan

Transaksi

Beli

Menjual

74

1/22/2006

Pemasok B

Pembelian

20

77

1/22/2006

Pemasok B

Pembelian

60

80

1/22/2006

Pemasok D

Pembelian

75

81

1/22/2006

Pemasok A

Pembelian

125

81

1/22/2006

Pemasok A

Pembelian

200

7

1/20/2006

Perusahaan D

Penjualan

10

51

1/20/2006

Perusahaan D

Penjualan

10

80

1/20/2006

Perusahaan D

Penjualan

10

34

1/15/2006

Perusahaan AA

Penjualan

100

80

1/15/2006

Perusahaan AA

Penjualan

30

Metode alternatif untuk mendapatkan hasil yang sama akan ditambahkan kueri di dalam kueri gabungan dengan kueri yang lain:

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 tipe data yang Anda tentukan. Tentu saja, Anda tidak ingin output kueri ini mengganggu hasil sehingga trik untuk menghindari yang adalah untuk menyertakan klausa WHERE untuk False:

WHERE False

Ini adalah sedikit trik karena ini selalu false dan lalu kueri tidak mengembalikan apa pun. Menggabungkan pernyataan ini dengan SQL yang sudah ada dan kami tiba di pernyataan lengkap sebagai berikut:

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: Kueri gabungan berikut dalam contoh ini menggunakan Northwind database mengembalikan rekaman 100, saat dua masing-masing kueri mengembalikan rekaman 58 dan 43 Total 101 catatan. Alasan untuk perbedaan ini adalah karena dua catatan tidak unik. Lihat bagian, bekerja dengan catatan yang berbeda dalam kueri gabungan menggunakan UNION ALL, untuk mempelajari cara menyelesaikan skenario ini dengan menggunakan UNION ALL.

Kasus khusus untuk kueri gabungan adalah untuk menggabungkan satu set rekaman dengan satu catatan yang berisi jumlah dari satu atau beberapa bidang.

Berikut adalah contoh lain yang bisa Anda buat dalam contah database Northwind untuk menggambarkan cara mendapatkan total dalam kueri gabungan.

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

    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. Beralih ke lembar data tampilan dan Anda akan melihat empat pembelian:

    Tanggal yang diterima

    Jumlah

    1/22/2006

    100

    1/22/2006

    60

    4/4/2006

    50

    4/5/2006

    300

  3. Untuk mendapatkan total, membuat kueri berjumlah sederhana menggunakan SQL berikut ini:

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

    MaxOfDate diterima

    SumOfQuantity

    4/5/2006

    510

  5. Menggabungkan dua kueri ini ke dalam kueri gabungan untuk menambahkan catatan dengan jumlah total ke catatan 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. Beralih ke lembar data tampilan dan Anda akan melihat pembelian empat dengan jumlah dari setiap diikuti dengan catatan yang Total kuantitas:

    Tanggal yang diterima

    Jumlah

    1/22/2006

    60

    1/22/2006

    100

    4/4/2006

    50

    4/5/2006

    300

    4/5/2006

    510

Yang mencakup dasar-dasar menambahkan Total ke dalam kueri gabungan. Anda juga mungkin ingin menyertakan nilai tetap di kedua kueri seperti "Detail" dan "Total" secara visual memisahkan catatan total dari catatan lainnya. Anda bisa meninjau menggunakan nilai tetap di bagian menggabungkan tiga atau lebih tabel atau kueri dalam kueri gabungan.

Kueri gabungan di Access secara default hanya menyertakan catatan berbeda. Tapi bagaimana jika Anda ingin menyertakan semua catatan? Contoh lain mungkin berguna di sini.

Di bagian sebelumnya, kami akan menunjukkan cara membuat total dalam kueri gabungan. Mengubah kueri SQL untuk menyertakan ID Produk itu gabungan = 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];

Beralih ke lembar data tampilan dan Anda akan melihat hasil menyesatkan:

Tanggal yang diterima

Jumlah

1/22/2006

100

1/22/2006

200

Satu catatan tentu saja tidak kembali dua kali jumlah total.

Alasan Anda melihat hasil ini adalah karena pada satu hari sama jumlah coklat dijual dua kali - seperti direkam dalam tabel detail pesanan pembelian. Inilah Hasil kueri pemilihan sederhana yang menampilkan catatan kedua dalam contah database Northwind:

ID pesanan pembelian

Product

Quantity

100

Northwind Traders cokelat

100

92

Northwind Traders cokelat

100

Di dalam kueri gabungan yang disebutkan sebelumnya, Anda bisa melihat bahwa bidang ID pesanan pembelian tidak disertakan dan dua bidang tidak membuat dua catatan yang berbeda.

Jika Anda ingin menyertakan semua catatan, gunakan UNION ALL daripada UNION dalam SQL Anda. Ini akan sebagian besar mungkin berdampak pada pengurutan hasil, sehingga Anda mungkin ingin juga menyertakan URUTKAN menurut klausa untuk menentukan susunan urutan. Berikut adalah penyusun SQL dimodifikasi dari 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];

Beralih ke lembar data tampilan dan Anda akan melihat semua detail selain total sebagai rekaman terakhir:

Tanggal yang diterima

Total

Jumlah

1/22/2006

100

1/22/2006

100

1/22/2006

Total

200

Penggunaan umum untuk kueri gabungan adalah berfungsi sebagai sumber rekaman untuk kontrol kotak kombo pada formulir. Anda bisa menggunakan kotak kombo untuk memilih nilai untuk memfilter rekaman formulir. Sebagai contoh, memfilter catatan karyawan menurut kota mereka.

Untuk melihat bagaimana ini mungkin berfungsi, berikut adalah contoh lain bahwa Anda bisa membuat dalam contah database Northwind untuk menggambarkan skenario ini.

  1. Membuat kueri pemilihan sederhana yang menggunakan sintaks SQL:

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

    Kota

    Filter

    Seattle

    Seattle

    Bellevue

    Bellevue

    Redmond

    Redmond

    Kirkland

    Kirkland

    Seattle

    Seattle

    Redmond

    Redmond

    Seattle

    Seattle

    Redmond

    Redmond

    Seattle

    Seattle

  3. Melihat hasil tersebut Anda mungkin tidak melihat banyak nilai. Perluas kueri meskipun dan mentransformasi data untuk kueri gabungan dengan menggunakan SQL berikut ini:

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

    Kota

    Filter

    < semua >

    *

    Bellevue

    Bellevue

    Kirkland

    Kirkland

    Redmond

    Redmond

    Seattle

    Seattle

    Access melakukan union catatan sembilan, diperlihatkan sebelumnya, dengan nilai bidang tetap < semua > dan "*".

    Karena klausa union ini tidak berisi UNION ALL, Access mengembalikan hanya berbeda rekaman yang berarti tiap kota dikembalikan hanya sekali dengan nilai identik tetap.

  5. Sekarang karena Anda sudah selesai kueri gabungan menampilkan setiap nama kota hanya sekali, bersama dengan opsi yang efektif memilih kota, Anda bisa menggunakan kueri ini sebagai sumber rekaman untuk kotak kombo pada formulir. Menggunakan contoh ini tertentu sebagai model, Anda bisa membuat kontrol kotak kombo pada formulir, atur kueri ini sebagai sumber rekaman, atur lebar kolom properti Filter kolom ke 0 (nol) untuk menyembunyikan secara visual dan lalu tetapkan properti kolom terikat ke 1 untuk menunjukkan indeks kolom kedua. Dalam properti Filter formulir itu sendiri, Anda bisa lalu menambahkan dalam kode seperti yang berikut ini untuk mengaktifkan filter formulir menggunakan nilai yang dipilih di kontrol kotak kombo:

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

    Pengguna formulir lalu bisa memfilter catatan formulir ke nama kota tertentu atau pilih < semua > Daftar semua catatan untuk semua kota.

Atas Halaman

Kembangkan keterampilan Office 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.

×