Giriş
Önceki derste, tek bir tablo ile basit bir sorgu oluşturmayı öğrendiniz . Access’te tasarladığınız sorguların çoğu , daha karmaşık soruları yanıtlamanıza olanak tanıyan birden çok tablo kullanır . Bu derste çok tablolu bir sorgu tasarlamayı ve oluşturmayı öğreneceksiniz .
Çok tablolu bir sorgu tasarlama
Ne bulmaya çalıştığınıza ve onu nasıl bulacağınıza dair iyi bir fikriniz yoksa, sorgulamaları anlamak ve oluşturmak zor olabilir. Tek tablolu bir sorgu, ilerledikçe telafi etmek için yeterince basit olabilir, ancak daha güçlü bir şey oluşturmak için sorguyu önceden planlamanız gerekir .
Bir sorgu planlama
Birden fazla tablo kullanan bir sorgu planlarken, şu dört adımı izleyin:
- Nokta bilmek tam olarak ne istediğini. Veritabanınıza herhangi bir soru sorabilseydiniz, bu ne olurdu? Bir soru sormak, sadece bir soru sormaktan daha karmaşıktır, ancak hangi soruyu tam olarak cevaplamak istediğinizi bilmek yararlı bir sorgu oluşturmak için şarttır.
- Sorgu sonuçlarınıza dahil etmek istediğiniz her tür bilgiyi tanımlayın . Bu bilgileri hangi alanlar içeriyor?
- Sorgunuza eklemek istediğiniz alanları bulun . Hangi tablolarda bulunur?
- Her alandaki bilgilerin yerine getirmesi gereken kriterleri belirleyin . İlk adımda sorduğunuz soruyu düşünün. Belirli bilgileri aramak için hangi alanları aramanız gerekir? Hangi bilgileri arıyorsunuz? Nasıl arayacaksın?
Bu süreç ilk başta soyut görünebilir, ancak kendi çoklu tablo sorgumuzu planlama sürecinden geçtikçe sorgularınızın planlanmasının bunları nasıl daha kolay hale getirebileceğini anlamaya başlamanız gerekir.
Sorgumuzu planlama
Fırıncılık veritabanımızda çalıştıracağımız bir sorgu ile bu planlama sürecinden geçelim. Planlama sürecini adım adım okuduğunuzda, planlama sürecinin her bir parçasının çalıştırabileceğiniz diğer sorgulara nasıl uygulanabileceğini düşünün.
1. Adım: Sormak istediğimiz soruyu saptayarak
Unlu mamul veritabanımızda, bir kısmı hiç sipariş vermemiş, ancak bizim e-posta listemize kaydoldukları için veritabanımızda bulunan birçok müşteri var. Birçoğu şehir sınırları dahilinde yaşıyor, ancak bazıları şehir dışında hatta devlet dışında yaşıyor. Geçmişte sipariş vermiş olan şehir dışı müşterilerimizin geri gelip bize bir kez daha denemelerini istiyoruz, bu yüzden onlara bazı kuponlar postalayacağız. Aslında, listemizin çok uzakta yaşayan müşterileri içermesini istemiyoruz; Bölgemizde yaşayan kimseye kupon göndermek muhtemelen o kişiyi içeri sokmayacaktır. Bu yüzden sadece şehrimizde yaşamayan ama bölgemizde yaşayan insanları bulmak istiyoruz.
Kısacası, sorgumuzun cevaplamasını istediğimiz soru şudur: Bölgemizde hangi müşteriler yaşıyor, şehir sınırları dışında ve pastanemize bir sipariş mi verdiniz?
Adım 2: İhtiyacımız olan bilgiyi belirleme
Bu müşteriler hakkında bir listede hangi bilgileri görmek isteyebiliriz? Açıkçası, müşterilerin adlarına ve iletişim bilgilerine ihtiyacımız olacak : adresleri , telefon numaraları ve e-posta adresleri . Ama emirleri verdiklerini nasıl öğreneceğiz? Bir siparişin her kaydı, bu siparişi veren müşteriyi tanımlar. Biz eklerseniz sipariş kimlik numaralarını , daha önce yerleştirilen emir var sadece müşterilerine listesini daraltır gerekir.
Adım 3: İhtiyacımız olan bilgiyi içeren tabloları bulmak
Bir sorgu yazmak için, veritabanınızdaki farklı tabloları bilmeniz gerekir. Kendi veritabanımızla yoğun bir şekilde çalışmaktan, ihtiyacımız olan müşteri bilgilerinin Müşteriler tablosundaki alanlarda bulunduğunu biliyoruz . Bizim Sipariş kimlik numaraları bir alanda bulunmaktadır Siparişler tablosundaki. İhtiyacımız olan tüm bilgileri bulmak için sadece bu iki tabloyu eklememiz gerekir.
Adım 4: Sorgumuzun araması gereken kriterleri belirlemek
Sorgudaki bir alan için ölçütler ayarladığınızda, temelde sorguyu yalnızca ölçütlerinizle eşleşen bilgileri almasını söyleyen bir filtre uygulamanız gerekir. Bu sorguya eklediğimiz alanların listesini gözden geçirin. Sorumuza cevap vermemize en iyi yardımcı olacak kriterleri nasıl ve nerede belirleyebiliriz?
Kasabamız Raleigh’de yaşayan müşterilerin olmasını istemiyoruz, bu nedenle şehir alanındaki Raleigh’e sahip olanlar dışındaki tüm kayıtları iade edecek kriterler istiyoruz . Çok uzaklarda yaşayan müşterileri de istemiyoruz. Biz de sadece gelen girişleri kayıtları döndürür bir ölçüt ekleriz böylece bölgedeki telefon numaralarının tamamı, 919 alan kodu ile başlayan telefon numarası alanına başlamak 919. Bu sadece kupon göndeririz garanti etmelidir Gerçekten geri gelip onları kullanmak için yeterince yakın yaşayan müşteriler.
Sipariş kimliği alanı veya başka herhangi bir alan için bir ölçüt koymayacağız çünkü belirlediğimiz iki ölçütü karşılayan kişilerin yaptığı tüm siparişleri görmek istiyoruz .
Sorgu yazmak için, Access’in anlayacağı bir dilde ölçütler atamanız gerekir . Yukarıdaki resimde görebileceğiniz gibi, 919 ile başlayan telefon numaralarını gerektiren kriterlerimiz şöyle yazılmalıdır: Like (“919 *”) . Ek ölçütler yazmayı öğrenmek için , Access sorgularında kullanılan en yaygın ölçütlerden bazılarını içeren yazdırılabilir.
Sorgularda tabloları birleştirme
Bir sorgu tasarlarken dikkate almanız gereken son şey , birlikte çalıştığınız tabloları bağlama veya katılma şeklinizdir. Bir Access sorgusuna iki tablo eklediğinizde, Nesne İlişkileri bölmesinde göreceğiniz şey budur :
İki tabloyu birbirine bağlayan satıra birleştirme satırı denir . Birleştirme çizgisinin gerçekte bir ok olduğunu görüyor musunuz? Bunun nedeni, sorgunun iki tablodaki verilere bakma sırasını göstermesidir. Yukarıdaki resimde, okundan işaret ediyor sola karşı sağ sorgu verileri bakacağız yani sol sadece verilere bakmak, sonra ilk tablonun sağ masaya ilgilidir zaten sol tabloda görmüş kayıtlara .
Masalarınız her zaman bu şekilde birleştirilmez. Bazen Erişim onlara katılacak sağa için sol . Her iki durumda da, sorgunuzun doğru bilgileri içerdiğinden emin olmak için birleştirme yönünü değiştirmeniz gerekebilir . Katılmak yön etkileyebilir hangi bilgilerin sorgu alır .
Bunun ne anlama geldiğini anlamak için tasarladığımız sorguyu düşünün. Sorgumuz için, sipariş veren müşterileri görmemiz gerekiyor, bu nedenle Müşteriler tablosunu ve Siparişler tablosunu ekledik . Bu tablolarda yer alan bazı verilere bir göz atalım.
Bu listelere baktığınızda neler fark ediyorsunuz? Öncelikle, Siparişler tablosundaki her bir sipariş Müşteriler tablosundaki birine ( bu siparişi veren müşteriye) bağlanır . Ancak, Müşteriler tablosuna baktığınızda, birden fazla sipariş vermiş olan müşterilerin birden fazla siparişe bağlı olduğunu ve hiç bir sipariş vermeyenlerin hiçbir siparişe bağlı olmadığını göreceksiniz. Gördüğünüz gibi, iki tablo birbirine bağlı olsa bile, bir tablodaki kayıtların diğer tablodaki herhangi bir kayıtla ilişkisi olmayan kayıtlara sahip olmak mümkündür.
Peki, Access sorgunuzu geçerli birleştirme ile soldan sağa çalıştırmaya çalıştığında ne olur ? Her rekoru masadan sola doğru çeker: Müşteriler masamız.
Daha sonra Access’in sol tablodan aldığı bir kayıtla ilişkisi olan sağdaki tablodaki her kaydı alır .
Katılmamız Müşteriler tablosuyla başladığından, sorgumuz , asla sipariş vermeyenler de dahil olmak üzere tüm müşterilerimiz için kayıtları içerecektir . Bu ihtiyaç duyduğumuzdan daha fazla bilgi. Biz sadece kayıtlarını görmek istiyorum emir vermiş müşteriler .
Neyse ki, birleşme çizgisinin yönünü değiştirerek bu sorunu çözebiliriz. Tabloları sağdan sola birleştirirsek , Access ilk önce siparişleri doğru tabloda, Siparişler tablosunda alır:
Ardından Access soldaki tabloya bakacak ve yalnızca sağdaki siparişe bağlı müşterilerin kayıtlarını alacaktır .
Artık tam olarak istediğimiz bilgilere sahibiz: sipariş veren tüm müşteriler ve sadece bu müşteriler. Gördüğünüz gibi, istediğimiz bilgiyi elde etmek için tablolarımıza doğru yönde katılmak zorunda kaldık.
Artık hangi birleşme yönünü kullanmamız gerektiğini anladığımızda, sorgunuzu oluşturmaya hazırız!
Bizim sorguda, biz kullanmak için gerekli hakkı – sola katılmak, ancak doğru bağlıdır Sorgularınızdaki tablolar için yönünü katılmak neyi görmek istediğiniz ve bilgilerin nerede bu bilgi saklanır. Bir sorguya tablo eklediğinizde, Access otomatik olarak sizin için tabloları birleştirir, ancak çoğu zaman bunları doğru yönde birleştirmez. Bu nedenle , sorgu oluşturmadan önce tablolarınız arasındaki birleşimleri her zaman gözden geçirmeniz önemlidir .
Çok tablolu bir sorgu oluşturma
Şimdi sorgumuzu planladık, onu tasarlamaya ve çalıştırmaya hazırız. Sorgunuz için yazılı planlar oluşturduysanız, sorgu tasarım süreci boyunca bunlara sıklıkla başvurduğunuzdan emin olun.
Çok tablolu bir sorgu oluşturmak için:
- Şeritte Oluştur sekmesinden Sorgu Tasarımı komutunu seçin .
- Görünür, Sorgunuzu dahil tıklamanız istediğiniz her tabloyu seçmeniz iletişim kutusunda Ekle . Birden fazla tablo seçmek için klavyenizdeki Ctrl tuşunu basılı tutabilirsiniz . Sorgumuzu planladığımızda, Müşteriler ve Siparişler tablosundan bilgiye ihtiyacımız olduğuna karar verdik , bu yüzden bunları ekleyelim.
- İstediğiniz tüm tabloları ekledikten sonra Kapat ‘ı tıklayın .
- Tablolar bir birleştirme çizgisine bağlı Nesne İlişkileri bölmesinde görünecektir . Birleşme yönünü düzenlemek için birleşme çizgisinin ince bölümünü iki tablo arasında çift tıklatın .
- Özellikleri Üyelik iletişim kutusu görünecektir. Katılmanızın yönünü seçmek için bir seçenek seçin. Örneğimizde, seçenek 3’ü seçeceğiz çünkü sağdan sola birleşme istiyoruz.
- Tablo pencerelerinde, sorgunuza eklemek istediğiniz alan adlarını çift tıklayın . Ekranın alt kısmındaki tasarım ızgarasına eklenecekler . Örneğimize, Müşteriler tablosundaki alanların çoğunu dahil edeceğiz : Adı , Soyadı , Cadde Adresi , Şehir , Eyalet , Posta Kodu ve Telefon Numarası . Biz de ekleriz kimlik numarasını gelen siparişler masaya.
- Her bir alanın ölçüt satırına istediğiniz ölçütleri girerek alan ölçütlerini ayarlayın . Biz iki kriterlerini belirlemek istediğiniz: Değil ( “Raleigh”) içinde de İl alanı ve gibi ( “919 *”) içinde Telefon Numarası alanına. Bu, Raleigh’te yaşayan ancak 919 alan kodunda yaşayan müşterileri bulacaktır.
- Eğer kriterleri ayarladıktan sonra çalıştırın tıklayarak sorgu Çalıştır komutunu Tasarım sekmesi.
- Sorgu sonuçları, sorgunun bir tabloya benzeyen Veri Sayfası görünümünde görüntülenecektir . İsterseniz kaydetmek tıklayarak sorgu kaydet hızlı erişim araç çubuğu üzerindeki komutu. Adını istendiğinde istenen adını yazın, ardından OK .
Şimdi çok tablolu bir sorgu oluşturmayı biliyorsunuz . Bir sonraki derste, sorgunuzu daha da güçlü hale getirebilecek daha fazla sorgu tasarım seçeneğini ele alacağız.