Cara Menulis Query Microsoft Access SQL Dari Awal

Cara Menulis Query Microsoft Access SQL Dari Awal

Microsoft Access bisa dibilang alat yang paling kuat di seluruh suite Microsoft Office, namun membingungkan (dan kadang-kadang membuat takut) pengguna listrik Office. Dengan kurva belajar yang lebih curam daripada Word atau Excel, bagaimana orang bisa memahami penggunaan alat ini? Minggu ini, Bruce Epper akan melihat beberapa masalah yang didorong oleh pertanyaan ini dari salah satu pembaca kami.





Seorang Pembaca bertanya:

Saya mengalami masalah saat menulis kueri di Microsoft Access. Saya memiliki database dengan dua tabel produk yang berisi kolom umum dengan kode produk numerik dan nama produk terkait. Saya ingin mengetahui produk mana dari Tabel A yang dapat ditemukan di Tabel B. Saya ingin menambahkan kolom bernama Hasil yang berisi nama produk dari Tabel A jika ada, dan nama produk dari Tabel B jika tidak ada di Tabel A. Apakah Anda punya saran?





Balasan Bruce:

Microsoft Access adalah Sistem Manajemen Basis Data (DBMS) yang dirancang untuk digunakan pada mesin Windows dan Mac. Ini menggunakan mesin database Jet Microsoft untuk pemrosesan dan penyimpanan data. Ini juga menyediakan antarmuka grafis untuk pengguna yang hampir menghilangkan kebutuhan untuk memahami Structured Query Language (SQL).





SQL adalah bahasa perintah yang digunakan untuk menambah, menghapus, memperbarui, dan mengembalikan informasi yang disimpan dalam database serta memodifikasi komponen inti database seperti menambah, menghapus, atau memodifikasi tabel atau indeks.

Titik pangkal

Jika Anda belum terbiasa dengan Access atau RDBMS lainnya, saya sarankan Anda memulai dengan sumber daya ini sebelum melanjutkan:



  • Jadi Apa itu Basis Data? di mana Ryan Dube menggunakan Excel untuk menunjukkan dasar-dasar database relasional.
  • Panduan Singkat Untuk Memulai Dengan Microsoft Access 2007 yang merupakan ikhtisar tingkat tinggi Access dan komponen yang terdiri dari database Access.
  • Tutorial Cepat Untuk Tabel di Microsoft Access 2007 membahas pembuatan database dan tabel pertama Anda untuk menyimpan data terstruktur Anda.
  • Tutorial Singkat Query Di Microsoft Access 2007 melihat cara untuk mengembalikan bagian tertentu dari data yang disimpan dalam tabel database.

Memiliki pemahaman dasar tentang konsep-konsep yang diberikan dalam artikel ini akan membuat yang berikut ini sedikit lebih mudah untuk dicerna.

Hubungan Basis Data dan Normalisasi

Bayangkan Anda menjalankan perusahaan yang menjual 50 jenis widget berbeda di seluruh dunia. Anda memiliki basis klien 1.250 dan dalam sebulan rata-rata menjual 10.000 widget ke klien ini. Saat ini Anda menggunakan satu spreadsheet untuk melacak semua penjualan ini - secara efektif satu tabel database. Dan setiap tahun menambahkan ribuan baris ke spreadsheet Anda.





Gambar di atas adalah bagian dari spreadsheet pelacakan pesanan yang Anda gunakan. Sekarang katakanlah kedua klien ini membeli widget dari Anda beberapa kali dalam setahun sehingga Anda memiliki lebih banyak baris untuk keduanya.





Jika Joan Smith menikahi Ted Baines dan mengambil nama belakangnya, setiap baris yang berisi namanya sekarang perlu diubah. Masalahnya diperparah jika Anda kebetulan memiliki dua klien berbeda dengan nama 'Joan Smith'. Menjadi jauh lebih sulit untuk menjaga data penjualan Anda tetap konsisten karena peristiwa yang cukup umum.

Dengan menggunakan database dan menormalkan data, kita dapat memisahkan item ke dalam beberapa tabel seperti inventaris, klien, dan pesanan.

Hanya melihat bagian klien dari contoh kami, kami akan menghapus kolom untuk Nama Klien dan Alamat Klien dan memasukkannya ke dalam tabel baru. Pada gambar di atas, saya juga memecahkan masalah dengan lebih baik untuk akses data yang lebih terperinci. Tabel baru juga berisi kolom untuk Primary Key (ClientID) - nomor yang akan digunakan untuk mengakses setiap baris dalam tabel ini.

Di tabel asli tempat kami menghapus data ini, kami akan menambahkan kolom untuk Foreign Key (ClientID) yang ditautkan ke baris yang tepat yang berisi informasi untuk klien khusus ini.

Sekarang, ketika Joan Smith mengubah namanya menjadi Joan Baines, perubahan itu hanya perlu dilakukan sekali di tabel Klien. Setiap referensi lain dari tabel yang digabungkan akan menarik nama klien yang tepat dan laporan yang melihat apa yang telah dibeli Joan selama 5 tahun terakhir akan mendapatkan semua pesanan dengan nama gadis dan nama menikahnya tanpa harus mengubah cara laporan dibuat .

Sebagai manfaat tambahan, ini juga mengurangi jumlah keseluruhan penyimpanan yang dikonsumsi.

Gabung Jenis

SQL mendefinisikan lima jenis gabungan: INNER, LEFT OUTER, RIGHT OUTER, FULL OUTER, dan CROSS. Kata kunci OUTER adalah opsional dalam pernyataan SQL.

Microsoft Access memungkinkan penggunaan INNER (default) , LEFT OUTER, RIGHT OUTER, dan CROSS. FULL OUTER tidak didukung seperti itu, tetapi dengan menggunakan LEFT OUTER, UNION ALL, dan RIGHT OUTER, ini dapat dipalsukan dengan biaya lebih banyak siklus CPU dan operasi I/O.

Output dari CROSS join berisi setiap baris tabel kiri yang dipasangkan dengan setiap baris tabel kanan. Satu-satunya waktu saya pernah melihat CROSS bergabung digunakan adalah selama pengujian beban server database.

Mari kita lihat cara kerja gabungan dasar, lalu kita akan memodifikasinya agar sesuai dengan kebutuhan kita.

Mari kita mulai dengan membuat dua tabel, ProdA dan ProdB, dengan properti desain berikut.

AutoNumber adalah bilangan bulat panjang yang bertambah secara otomatis yang ditetapkan ke entri saat ditambahkan ke tabel. Opsi Teks tidak diubah, sehingga akan menerima string teks hingga 255 karakter.

Sekarang, isi mereka dengan beberapa data.

Untuk menunjukkan perbedaan cara kerja 3 jenis gabungan, saya telah menghapus entri 1, 5, dan 8 dari ProdA.

Lanjut, buat kueri baru dengan pergi ke Buat > Desain Kueri . Pilih kedua tabel dari dialog Show Table dan klik Tambahkan , kemudian Menutup .

Klik ProductID di tabel ProdA, seret ke ProductID di tabel ProdB dan lepaskan tombol mouse untuk membuat hubungan antar tabel.

Klik kanan pada garis antara tabel yang mewakili hubungan antara item dan pilih Gabung Properti .

Secara default, join type 1 (INNER) dipilih. Opsi 2 adalah gabungan LEFT OUTER dan 3 adalah gabungan OUTER KANAN.

Kita akan melihat INNER join terlebih dahulu, jadi klik OK untuk menutup dialog.

Di desainer kueri, pilih bidang yang ingin kita lihat dari daftar turun bawah.

Saat kita menjalankan kueri (tanda seru merah di pita), itu akan menampilkan bidang ProductName dari kedua tabel dengan nilai dari tabel ProdA di kolom pertama dan ProdB di kolom kedua.

Perhatikan hasilnya hanya menunjukkan nilai di mana ProductID sama di kedua tabel. Meskipun ada entri untuk ProductID = 1 di tabel ProdB, namun tidak muncul di hasil karena ProductID = 1 tidak ada di tabel ProdA. Hal yang sama berlaku untuk ProductID = 11. Itu ada di tabel ProdA tetapi tidak di tabel ProdB.

Dengan menggunakan tombol Lihat pada pita dan beralih ke Tampilan SQL, Anda bisa melihat kueri SQL yang dihasilkan oleh desainer yang digunakan untuk mendapatkan hasil ini.

SELECT ProdA.ProductName, ProdB.ProductName FROM ProdA INNER JOIN ProdB ON ProdA.ProductID = ProdB.ProductID;

Kembali ke Design View, ubah join type menjadi 2 (LEFT OUTER). Jalankan kueri untuk melihat hasilnya.

Seperti yang Anda lihat, setiap entri di tabel ProdA diwakili dalam hasil sementara hanya entri di ProdB yang memiliki entri ProductID yang cocok di tabel ProdB yang muncul di hasil.

Ruang kosong di kolom ProdB.ProductName adalah nilai khusus (NULL) karena tidak ada nilai yang cocok di tabel ProdB. Ini akan terbukti penting nanti.

SELECT ProdA.ProductName, ProdB.ProductName FROM ProdA LEFT JOIN ProdB ON ProdA.ProductID = ProdB.ProductID;

Coba hal yang sama dengan tipe ketiga join (KANAN LUAR).

Hasilnya menunjukkan semuanya dari tabel ProdB saat menunjukkan nilai kosong (dikenal sebagai NULL) di mana tabel ProdA tidak memiliki nilai yang cocok. Sejauh ini, ini membawa kita paling dekat dengan hasil yang diinginkan dalam pertanyaan pembaca kami.

SELECT ProdA.ProductName, ProdB.ProductName FROM ProdA RIGHT JOIN ProdB ON ProdA.ProductID = ProdB.ProductID;

Menggunakan Fungsi dalam Query

Hasil dari suatu fungsi juga dapat dikembalikan sebagai bagian dari kueri. Kami ingin kolom baru bernama 'Hasil' muncul di kumpulan hasil kami. Nilainya akan menjadi isi kolom ProductName dari tabel ProdA jika ProdA memiliki nilai (bukan NULL), jika tidak maka harus diambil dari tabel ProdB.

Fungsi JIKA Segera (IIF) dapat digunakan untuk menghasilkan hasil ini. Fungsi ini mengambil tiga parameter. Yang pertama adalah kondisi yang harus dievaluasi ke nilai Benar atau Salah. Parameter kedua adalah nilai yang akan dikembalikan jika kondisinya Benar, dan parameter ketiga adalah nilai yang akan dikembalikan jika kondisinya Salah.

Konstruksi fungsi lengkap untuk situasi kita terlihat seperti ini:

IIF(ProdA.ProductID Is Null, ProdB.ProductName,ProdA.ProductName)

Perhatikan bahwa parameter kondisi tidak memeriksa kesetaraan. Nilai Null dalam database tidak memiliki nilai yang dapat dibandingkan dengan nilai lainnya, termasuk Null lainnya. Dengan kata lain, Null tidak sama dengan Null. Pernah. Untuk melewati ini, kami memeriksa nilainya menggunakan kata kunci 'Adalah'.

Kita juga bisa menggunakan 'Is Not Null' dan mengubah urutan parameter True dan False untuk mendapatkan hasil yang sama.

Saat memasukkan ini ke dalam Desainer Kueri, Anda harus mengetikkan seluruh fungsi ke dalam entri Bidang:. Untuk membuatnya membuat kolom 'Hasil', Anda perlu menggunakan alias. Untuk melakukan ini, awali fungsi dengan 'Hasil:' seperti yang terlihat pada tangkapan layar berikut.

Kode SQL yang setara untuk melakukan ini adalah:

SELECT ProdA.ProductName, ProdB.ProductName, IIF(ProdA.ProductID Is Null,ProdB.ProductName,ProdA.ProductName) AS Results FROM ProdA RIGHT JOIN ProdB ON ProdA.ProductID = ProdB.ProductID;

Sekarang, ketika kami menjalankan kueri ini, itu akan menghasilkan hasil ini.

cara mendapatkan iphone dalam mode pemulihan

Di sini kita melihat untuk setiap entri di mana tabel ProdA memiliki nilai, nilai itu tercermin di kolom Hasil. Jika tidak ada entri di tabel ProdA, entri dari ProdB muncul di Hasil yang persis seperti yang diminta pembaca kami.

Untuk sumber daya lainnya untuk mempelajari Microsoft Access, lihat Cara Belajar Microsoft Access dari Joel Lee: 5 Sumber Daya Online Gratis .

Membagikan Membagikan Menciak Surel Apakah Layak Mengupgrade ke Windows 11?

Windows telah didesain ulang. Tetapi apakah itu cukup untuk meyakinkan Anda untuk beralih dari Windows 10 ke Windows 11?

Baca Selanjutnya
Topik-topik yang berkaitan
  • Produktifitas
  • Tanyakan pada Ahlinya
Tentang Penulis Bruce Epper(13 Artikel Diterbitkan)

Bruce telah bermain dengan elektronik sejak tahun 70-an, komputer sejak awal tahun 80-an, dan secara akurat menjawab pertanyaan tentang teknologi yang belum pernah dia gunakan atau lihat sepanjang waktu. Dia juga mengganggu dirinya sendiri dengan mencoba bermain gitar.

More From Bruce Epper

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan