Cara menggunakan concat postgresql
Terkadang, Anda mungkin ingin menggabungkan data dari satu tabel atau kueri dengan data dari satu atau beberapa tabel lain untuk membuat grup data, atau dengan kata lain daftar yang berisi semua data dari dua tabel atau lebih. Ini adalah tujuan dari kueri gabungan di Access Show
Untuk memahami kueri gabungan secara efektif, Anda harus terlebih dahulu mengetahui masalah desain kueri pemilihan dasar di Access. Untuk mempelajari selengkapnya tentang mendesain kueri pemilihan, lihat Membuat kueri pemilihan sederhana Catatan. Konten dalam artikel ini dimaksudkan untuk digunakan dengan database desktop Access. Anda tidak dapat membuat atau menggunakan kueri gabungan di database web Access atau aplikasi web Access Pelajari contoh kueri gabungan yang bisa dimodifikasiJika Anda belum pernah membuat kueri gabungan sebelumnya, Anda bisa menampilkan template Access Northwind untuk mempelajari contoh yang dapat dimodifikasi terlebih dahulu. Anda dapat menemukan templat contoh Northwind di halaman awal Access dengan mengeklik File > Baru atau langsung mengunduh salinan dari lokasi ini. Templat contoh angin utara Setelah Access membuka database Northwind, tutup dialog masuk yang pertama kali muncul dan perluas Panel Navigasi. Klik bagian atas Panel Navigasi, lalu pilih Tipe Objek untuk mengatur semua objek database menurut tipenya. Selanjutnya, luaskan grup Kueri dan Anda akan melihat kueri yang disebut Transaksi Produk Kueri gabungan mudah dibedakan dari objek kueri lain karena adanya ikon khusus yang menyerupai dua lingkaran terkait yang mewakili kombinasi dua grup Tidak seperti kueri pemilihan dan tindakan normal, tabel tidak terkait dalam kueri gabungan, yang berarti akses desainer kueri grafis tidak dapat digunakan untuk membuat atau mengedit kueri gabungan. Anda akan mengalami hal ini jika membuka kueri gabungan dari panel navigasi; . Di bawah perintah tampilan pada tab Beranda, Anda akan melihat bahwa tampilan desain tidak tersedia saat Anda bekerja dengan kueri gabungan. Anda hanya dapat beralih antara tampilan lembar data dan tampilan SQL saat bekerja dengan kueri gabungan Untuk terus mempelajari contoh kueri gabungan ini, klik Beranda > Tampilan > Tampilan SQL untuk menampilkan sintaks SQL yang mendefinisikannya. Dalam ilustrasi ini, kami telah menambahkan beberapa spasi ekstra di SQL sehingga Anda dapat dengan mudah melihat berbagai bagian yang menyusun kueri gabungan Mari pelajari sintaks SQL dari kueri gabungan ini dari database Northwind secara mendetail 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];_2 Bagian pertama dan ketiga dari pernyataan SQL ini pada dasarnya adalah dua kueri pemilihan. Kueri ini mengambil dua kumpulan data yang berbeda, satu dari tabel Pesanan Produk dan yang lainnya dari tabel Pembelian Produk Bagian kedua dari pernyataan SQL ini adalah kata kunci UNION yang memberi tahu Access bahwa kueri ini akan menggabungkan dua kumpulan data ini Bagian terakhir dari pernyataan SQL ini menentukan urutan kombinasi data menggunakan pernyataan ORDER BY. Dalam contoh ini, Access akan mengurutkan semua data berdasarkan bidang TanggalPesanan dalam urutan menurun Catatan. Kueri gabungan selalu hanya baca di Access. Anda tidak dapat mengubah nilai apa pun dalam tampilan lembar data Buat kueri gabungan dengan membuat dan menggabungkan kueri pemilihanMeskipun kueri gabungan dapat dibuat dengan langsung mengetikkan sintaks SQL dalam tampilan SQL, Anda dapat membuatnya lebih mudah dengan memecahnya menjadi beberapa bagian dengan kueri pemilihan. Anda kemudian dapat menyalin dan menempelkan bagian SQL ke dalam kueri gabungan Jika Anda tidak ingin membaca langkah-langkahnya dan ingin langsung melihat contoh yang tersedia, lihat bagian selanjutnya,
Setelah Anda membuat kueri pemilihan, saatnya menggabungkannya. Pada langkah ini, Anda membuat kueri gabungan dengan menyalin dan menempelkan pernyataan SQL
Hasil kueri gabungan akan muncul di tampilan Lembar Data Tonton contoh membuat kueri gabunganBerikut adalah contoh yang dapat Anda buat ulang dalam contoh database Northwind. Kueri gabungan ini mengumpulkan nama orang dari tabel Pelanggan dan menggabungkannya dengan nama orang dari tabel Pemasok. Jika Anda ingin mengikuti, lakukan langkah-langkah ini dalam contoh salinan database Northwind Anda Berikut adalah langkah-langkah yang diperlukan untuk membuat contoh ini
Jika Anda terbiasa menulis sintaks SQL, tentu saja Anda dapat menulis pernyataan SQL Anda sendiri untuk menggabungkan kueri langsung ke tampilan SQL. Namun, Anda harus mengikuti pendekatan menyalin dan menempelkan SQL dari objek kueri lainnya. Setiap kueri bisa jauh lebih rumit daripada 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 satu per satu hingga berhasil dijalankan, lalu membuat ulang kueri gabungan dengan sintaks yang benar Tinjau bagian selanjutnya dari artikel ini untuk mempelajari lebih lanjut tips dan trik tentang penggunaan kueri bergabung Menggabungkan tiga atau lebih tabel dan kueri dalam kueri gabunganPada contoh dari bagian sebelumnya yang menggunakan database Northwind, hanya data dari dua tabel yang digabungkan. Namun, Anda bisa dengan mudah menggabungkan tiga tabel atau lebih dalam kueri gabungan. Misalnya, jika menggunakan contoh sebelumnya, Anda juga bisa menyertakan nama karyawan di output kueri. Anda dapat menyelesaikan tugas 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];_4 Saat melihat hasilnya dalam tampilan lembar data, semua karyawan akan dicantumkan dengan contoh nama perusahaan, yang mungkin tidak terlalu berguna. Jika Anda ingin bidang menunjukkan apakah seseorang adalah pegawai kantor, dari pemasok, atau dari pelanggan, Anda bisa menyertakan nilai tetap sebagai alternatif nama perusahaan. Berikut tampilan SQLnya 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];5 Berikut adalah tampilan hasil yang akan muncul pada tampilan lembar data. Access menampilkan lima contoh data ini Pekerjaan Nama keluarga Nama depan Pekerja kantor Faradilla Nadia Pekerja kantor Giyanti Menyesuaikan Pemasok Giandra Surya Pelanggan Gunawan Daniel Pelanggan Galih Saputra Anton Kueri di atas dapat dikurangi lebih lanjut karena Access hanya membaca nama bidang keluaran dari kueri pertama dalam kueri gabungan. Di sini, kami telah menghapus keluaran dari bagian kedua dan ketiga kueri 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];_6 Memfilter dalam kueri gabunganDalam kueri gabungan Access, pengurutan hanya diperbolehkan satu kali, tetapi setiap kueri bisa difilter satu per satu. Menggunakan kueri gabungan dari bagian sebelumnya, berikut adalah contoh pemfilteran setiap kueri dengan menambahkan klausa WHERE 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];_7 Beralih ke tampilan lembar data dan Anda akan melihat hasil yang mirip dengan ini Pekerjaan Nama keluarga Nama depan Pemasok Anggraeni Elisa A Pekerja kantor Faradilla Nadia Pelanggan Haryono Johnny Pekerja kantor Hani Lesmana Anita Pemasok Herlina Ernawati Amel Pelanggan Maryanto kata sandi Pemasok Santoso Michael Pemasok Satria Laksamana Pekerja kantor Tantowi Syamsul Pemasok kemenangan Gambar Pekerja kantor Zainuddin Rian Menggabungkan tipe dataJika kueri yang digabungkan sangat berbeda, bidang keluaran harus menggabungkan data dari tipe 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 di tampilan lembar data. Sepuluh data terakhir akan terlihat mirip dengan keluaran 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 Katakanlah Anda ingin bidang Jumlah dipisahkan menjadi dua, yaitu Beli dan Jual. Anda juga ingin mengisi nilai nol tetap untuk bidang tanpa nilai. Berikut adalah tampilan SQL untuk kueri gabungan 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];_8 Jika Anda beralih ke tampilan lembar data, Anda akan melihat sepuluh data terakhir ditampilkan sebagai berikut ID Produk Tanggal pemesanan Nama perusahaan Transaksi Membelinya Menjual 74 22/1/2006 Pemasok B Pembelian tanggal 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 Masih dengan contoh ini, bagaimana jika ingin field dengan nilai null kosong? 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];_9 Namun, seperti yang dapat dilihat jika Anda beralih ke tampilan lembar data, kini Anda mendapatkan hasil yang tidak terduga. Di kolom Beli, setiap bidang kosong ID Produk Tanggal pemesanan Nama perusahaan Transaksi Membelinya Menjual 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 Ini terjadi karena Access menentukan tipe data bidang dari kueri pertama. Dalam contoh ini, Null bukan angka Oleh karena itu, apa yang terjadi jika Anda mencoba memasukkan string kosong untuk nilai bidang kosong? 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];_0 Saat Anda beralih ke tampilan lembar data, Anda akan melihat bahwa Access mengambil nilai beli, tetapi mengubahnya menjadi teks. Anda dapat mengetahui bahwa ini adalah nilai teks karena rata kiri dalam tampilan lembar data. String kosong di kueri non-numerik pertama menyebabkan 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 Membelinya Menjual 74 22/1/2006 Pemasok B Pembelian tanggal 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 Lantas, bagaimana cara memecahkan teka-teki ini? Solusinya adalah memaksa kueri untuk menganggap nilai bidang sebagai angka. Ini bisa dilakukan dengan ekspresi 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];_1 Kondisi yang akan diperiksa, False, tidak akan bernilai True, sehingga ekspresi akan selalu mengembalikan Null, tetapi Access masih mengevaluasi kedua opsi output dan menentukan output berupa angka atau Null Inilah cara menggunakan ungkapan ini dalam contoh yang dapat dimodifikasi 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];_2 Perlu diingat bahwa mengubah kueri kedua tidak boleh dilakukan Jika Anda beralih ke tampilan lembar data, Anda akan melihat hasil yang diinginkan ID Produk Tanggal pemesanan Nama perusahaan Transaksi Membelinya Menjual 74 22/1/2006 Pemasok B Pembelian tanggal 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 lain di awal 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];_3 Untuk setiap bidang, Access mengembalikan nilai tetap dari tipe data yang ditentukan. Tentu saja, Anda tidak ingin keluaran kueri ini mengganggu hasil, jadi Anda perlu menyertakan klausa WHERE ke False 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];_4 Ini adalah trik sederhana karena selalu salah dan kueri tidak mengembalikan apa pun. Gabungkan pernyataan ini dengan SQL yang ada dan pernyataan lengkap telah berhasil dibuat, yaitu 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];_5 Catatan. Kueri gabungan dalam contoh ini menggunakan database Northwind mengembalikan 100 data, sedangkan dua kueri individu mengembalikan 58 dan 43 data dengan total 101 data. Perbedaan ini terjadi karena kedua record tersebut tidak unik. Lihat bagian untuk mempelajari cara mengatasi skenario ini dengan menggunakan UNION ALL Menambahkan total dalam kueri gabunganKasus khusus untuk kueri gabungan adalah menggabungkan rangkaian data dengan data yang berisi jumlah dari satu atau beberapa bidang Berikut adalah contoh lain yang dapat Anda buat di contoh database Northwind untuk menunjukkan cara mendapatkan total dalam kueri gabungan
Penjelasan di atas mencakup dasar-dasar penambahan total ke kueri gabungan. Anda mungkin juga ingin menyertakan nilai tetap di kedua kueri seperti "Detail" dan "Total" untuk memisahkan total data secara visual dari data lainnya. Anda dapat meninjau penggunaan nilai konstanta di bagian tersebut Bekerja dengan data berbeda dalam kueri gabungan menggunakan UNION ALLGabungkan kueri di Access secara default hanya menyertakan data berbeda. Namun, bagaimana jika Anda ingin memasukkan semua data? Di bagian sebelumnya, kami menunjukkan cara membuat total dalam kueri gabungan. Ubah SQL kueri gabungan untuk menyertakan Product ID= 48 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];_9 Beralih ke tampilan lembar data, dan Anda akan melihat hasil yang cenderung kurang akurat Tanggal Diterima Jumlah 22/1/2006 100 22/1/2006 200 Tentu saja, satu data tidak mengembalikan jumlah total dua kali lipat Hal ini terjadi karena dalam satu hari jumlah coklat yang sama terjual dua kali, seperti yang tercatat di tabel Rincian Pesanan Pembelian. Berikut adalah hasil kueri pemilihan sederhana yang menampilkan kedua data dalam contoh database Northwind ID Pesanan Pembelian Produk Jumlah 100 Cokelat Pedagang Northwind 100 92 Cokelat Pedagang Northwind 100 Dalam kueri gabungan yang disebutkan sebelumnya, Anda dapat melihat bahwa bidang ID Pesanan Pembelian tidak disertakan dan kedua bidang tersebut tidak terdiri dari dua rekaman berbeda Jika ingin menyertakan semua catatan, gunakan UNION ALL alih-alih UNION di SQL Anda. Kemungkinan besar ini akan berdampak pada pengurutan hasil, jadi Anda perlu menyertakan klausa ORDER BY untuk menentukan urutan pengurutan. Ini adalah SQL yang dimodifikasi dari contoh sebelumnya 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];_0 Beralih 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 komboKueri gabungan sering digunakan sebagai sumber data untuk kontrol kotak kombo pada formulir. Anda dapat menggunakan kotak kombo untuk memilih nilai untuk memfilter data formulir. Misalnya memfilter data karyawan menurut kotanya Untuk mengetahui cara kerjanya, berikut adalah contoh lain yang dapat Anda buat di contoh database Northwind untuk menjelaskan skenario ini
|