Bazen, doğrudan (bire bir veya bire çok) ilişkileri olmayan veri kaynaklarından bilgi almak için sorgu oluşturmanız gerekir.
Sorgularda veri kaynaklarına bağlanmak için ara tabloları kullanma
Bir sorguyu çalıştırdığınızda Access, tablolar arasında oluşturmuş olduğunuz ilişkileri kullanır ve diğer veri kaynakları arasında bağlantılar ortaya çıkarır ve oluşturur. Bir sorgu için gereken ilişki yoksa, tabloları sorgunun bir parçası olarak bağlayın.
Farklı üreticilerden ürünler için kaç sipariş aldığınızı görmek istediğinizi varsayalım. Sağlayıcılar tablonuz, ürün kimliklerini ve miktar bilgisini içeren Satın Alma Siparişi Ayrıntıları tablonuza bağlı değildir. Ancak Satın Alma Siparişleri tablosu, Satın Alma Siparişi Ayrıntıları tablosuna bağlıdır.
İpucu : Bu ilişkiye oluşturduğunuz sorgu dışında ihtiyacınız olacaksa, daha sonra kullanmak için bir ara ilişki oluşturmak en iyisidir. Nasıl yapıldığını öğrenmek için bkz. Çoka çok ilişkisi oluşturma.
Ara tabloyu veritabanınızda oluşturmak istemiyorsanız, Satın Alma Siparişleri tablosunu sorgunuzda ara tablo olarak kullanın. Sağlayıcılar tablosunu Satın Alma Siparişleri tablosunun soluna ekleyin ve bir bağlantı oluşturun.
Satın Alma Siparişleri tablosu, birbirinden bağımsız iki tablo olan Sağlayıcılar’ı ve Satın Alma Siparişi Ayrıntıları’nı birbirine bağlar. Aşağıdaki ölçütlere uyan alanları (Sağlayıcı tablosundaki Kimlik ve Satın Alma Siparişleri tablosundaki Sağlayıcı Kimliği gibi) kullanarak tabloları bağlayın:
-
İki alanın eşleşen veya uyumlu veri türleri bulunuyor. Örneğin, bir metin alanını bir sayı alanına bağlayamazsınız.
-
Alanlar her tabloda uyumlu, benzersiz kayıtlar tanımlıyor. Örneğin, iki Soyadı alanını birbirine bağlamak istemezsiniz çünkü soyadlar her zaman benzersiz olmayabilir.
-
Alanlar, sonuçlarda doğru kayıtların verilmesini sağlar. Örneğin, Sağlayıcı Kimliği’ni Satın Alma Kimliği’ne bağladığınızda, kimlikleri benziyorsa bazı eşleşmeler elde edebilirsiniz. Ancak sonuçlar anlamlı olmaz, çünkü Sağlayıcı Kimliği’nin Satın Alma Kimliği’yle hiçbir ilgisi yoktur. Sağlayıcı tablosundaki Kimlik’i Satın Alma Siparişleri tablosundaki Sağlayıcı Kimliği’ne bağlamak daha iyi bir tercih olur; döndürülen kayıtlar anlamlı olur çünkü her iki alan da sağlayıcıyı tanımlar.
Adımlar
Veritabanınızda bir ara tablonuz varsa veya yalnızca sorgunuzda bir ara tablo kullanmayı planlıyorsanız, aşağıdaki adımları izleyin:
-
Ara tabloyu iki bağlı olmayan tablonun arasındaki sorgunuza ekleyin.
-
Ara tabloyla gerekli bağlantıları oluşturun.
Bağlantılar uygun herhangi bir birleştirme türünü kullanabilir, ancak bu modülde daha önce açıklanan ölçütlere uyan alanlar aracılığıyla bağlı olmaları gerekir.
-
Sorguyu tamamlayın.
Sorgu oluştururken her zamanki adımları izleyin: Çıkış alanı ekleyin, herhangi bir ölçüt ekleyin ve sorgunuzu çalıştırın veya kaydedin. Nasıl yapıldığını öğrenmek için bkz. Temel sorgu oluşturma.
Not : Ara tablosunu sonuçlarınıza eklemek zorunda değilsiniz. Ara tablo yalnızca sorgunun veri kaynaklarının bir parçası olmalıdır, böylece Access verileri bağlayabilir.
Daha fazlasını mı istiyorsunuz?
Bazen, birbiriyle ilişkili olmayan ve birleşim paylaşmayan sorgu tablolarına veya diğer veri kaynaklarına ihtiyacınız olabilir. Bunu yapmak için iki seçeneğiniz vardır.
Ara tablo kullanabilirsiniz. Ara tablo, kullanmak istediğiniz veri kaynaklarıyla birleşim paylaşan bir tablodur.
İkinci seçenek, birleşim eklemektir.
Ara tabloyla başlayalım. Bu örnek veritabanında, çalışanlar her sipariş için bir durum girmek zorunda ancak bazen bunu unutuyorlar.
Bu durumda şu soruya yanıt aramanız gerekir: “Hangi siparişlere durum girilmemiş ve bunu hangi çalışanlar unutmuş?”
Sorguda üç tablo kullanmamız gerekiyor gibi görünüyor: Çalışanlar, Siparişler ve Sipariş Ayrıntıları Durumu. Bu tablolar, sorduğumuz sorudaki veri noktalarına karşılık geliyor: “Hangi siparişlere durum girilmemiş ve bunu hangi çalışanlar unutmuş?”
Tabloları sorguya ekleyin. Şu iki tablonun birleştirilmediğini göreceksiniz, ancak sorun değil. Birleşim ekleyebiliriz.
Kimlik alanlarını birleştiriyoruz, sorguyu çalıştırıyoruz ve... hiçbir şey görünmüyor.
Öyleyse şimdi, en başta yapmış olamız gerekeni yapıyor ve tablolar arasındaki ilişkileri inceliyoruz.
Bunu yaptığımızda, ilişkiler zincirinin nasıl bir şey olduğunu görüyoruz: Çalışanlar-Siparişler, Siparişler-SiparişAyrıntıları ve SiparişAyrıntıları-SiparişAyrıntılarıDurumu.
Siparişler ile SiparişAyrıntılarıDurumu birbiriyle ilişkili değil, ancak SiparişAyrıntıları ikisiyle de ilişkili. Bu durumda SiparişAyrıntıları tablosu, bizim ara tablomuz oluyor.
Böylece bir kural oluşuyor: Ara tablolar veri kaynağınızın bir parçası olduğu sürece, bu ilişkisiz tabloları sorgulayabilir ve geçerli bir sonuç alabilirsiniz.
Ara tabloyu sonuçlarınıza dahil etmek zorunda değilsiniz ancak bu tablo, sorgunuzun veri kaynağının bir parçası olmalıdır.
Sorguya SiparişAyrıntıları’nı ekliyoruz, alanları aynı şekilde bırakıyoruz ve sorguyu çalıştırıyoruz.
Boş değerleri filtreliyoruz... ve yanıtımızı alıyoruz.
Şimdi de bir sorguya birleşim ekleyelim. Bu aşamada birkaç kuralı daha hatırlamakta fayda var.
Öncelikle, birleştirmek istediğiniz tablo ya da sorguların alanlarındaki veri türleri, birbiriyle eşleşmeli veya uyumlu olmalıdır.
Örneğin, Sayı ve Para Birimi veri türleri uyumludur ancak Sayı ve Metin uyumlu değildir.
İkinci olarak, oluşturduğunuz birleşim sadece sizin sorgunuzda bulunur. Burada bir tablo ilişkisi oluşturmuyorsunuz.
Son olarak, sonuçlar anlamlı olmalıdır. Örneğin birleşim, siparişler ve şirket arabaları verilerini döndürüyorsa, büyük olasılıkla baştan başlamanız gerekecektir.
Hangi müşterilerin hangi ürünleri sipariş ettiğini bilmek istediğimizi varsayalım.
Yeni bir sorguya Müşteriler, Siparişler ve SiparişAyrıntıları’nı ekleyelim. Şimdi de birleşimi ekleyelim. Müşteriler tablosundan müşteri kimliğini, Siparişler tablosundaki eşleşme alanına sürüklüyoruz.
Birleşim çizgimizi gördük. Burada başka bir kural daha var: Access, sürüklediğiniz alanı yeni birleşimin sol tarafına yerleştirir. Bunu yapmasını istemiyorsanız birleşim çizgisini seçin, Delete tuşuna basın ve yeniden başlayın.
Bunu da bitirdiğimize göre sorguyu oluşturabiliriz. Müşteriler tablosundan Ad ve Soyadı bilgilerini, SiparişAyrıntıları tablosundan da Ürün Kimliği, Sipariş Kimliği, Miktar ve BirimÜcreti bilgilerini ekleyelim.
Sorguyu çalıştıralım. Verilerimiz hazır.
İlişkisiz veri kaynaklarını sorgulamak için kullanabileceğiniz iki yöntemi öğrendiniz: ara tablo kullanmak ya da birleşim eklemek. Ayrıca veriler hakkındaki sorularınızın yanıtlarını da artık biliyorsunuz.