Birleşim sorgusu kullanarak birden çok sorguyu tek bir sonuçta bir araya getirme

Birleşim sorgusu kullanarak birden çok sorguyu tek bir sonuçta bir araya getirme

Not:  En güncel yardım içeriklerini, mümkün olduğunca hızlı biçimde kendi dilinizde size sunmak için çalışıyoruz. Bu sayfanın çevirisi otomasyon aracılığıyla yapılmıştır ve bu nedenle hatalı veya yanlış dil bilgisi kullanımları içerebilir. Amacımız, bu içeriğin sizin için faydalı olabilmesini sağlamaktır. Buradaki bilgilerin faydalı olup olmadığını bu sayfanın sonunda bize bildirebilir misiniz? Kolayca başvurabilmek için İngilizce makaleye buradan ulaşabilirsiniz .

Bazen, bir tablo veya sorgudan kayıtları tablodan bir kayıt kümesi - iki veya daha fazla tablodan tüm kayıtları olan bir liste oluşturmak için bir veya birden çok diğer kayıtlarla listelemek isteyebilirsiniz. Access'te bir birleşim sorgusunun amacına budur.

Verimli bir şekilde birleşim sorguları anlamak için ilk Access'te temel seçme sorgusunun tasarlama konusunda bilgi sahibi olmanız gerekir. Seçme sorguları tasarlama hakkında daha fazla bilgi için basit bir seçme sorgusu oluşturmakonusuna bakın.

Not:  Bu makaledeki içerik, Access masaüstü veritabanlarında kullanıma yöneliktir. Access web veritabanlarında veya Access web app'te birleşim sorgusu oluşturamaz veya kullanamazsınız.

Çalışan bir birleşim sorgusu örnek çalışma

Birleşim sorgusu önce hiç oluşturduysanız, ilk incelemesi çalışan bir örnek için Northwind Access şablonu yararlı. Access konusunda Başlarken sayfasında Northwind örnek şablon dosyası tıklatarak arayabilirsiniz > doğrudan Yeni veya bir kopyasını bu konumdan yükleyebilirsiniz: Northwind örnek şablonu.

Northwind veritabanını Access açıldıktan sonra ilk görünür ve Gezinti Bölmesi'ni genişletin oturum açma iletişim formu kapatın. Üst Gezinti Bölmesi'ni tıklatın ve sonra tüm veritabanı nesnelerini türüne göre düzenlemek için Nesne türünü seçin. Ardından, sorguları grubu genişletin ve Ürün hareketleriadlı sorguyu görürsünüz.

Birleşim sorguları kolayca united kümesinin iki kümelerinden temsil eden iki birbirine daireler benzer bir özel simgesi olduğundan diğer sorgu nesnelerden ayırt etmek için:

Access'te bir birleşim sorgusu simgesinin ekran görüntüsü.

Normal seçin ve eylem sorguları aksine, tablolar oluşturun veya birleşim sorguları düzenlemek için Grafik Sorgu Tasarımcısı kullanılamaz Access anlamına gelen bir birleşim sorgusundaki ilgili değildir. Gezinti Bölmesi'nden bir birleşim sorgusu açarsanız, bu deneyimi; Access açar ve sonuçlarını veri sayfası görünümü'nde görüntüleme. Giriş sekmesinin görünümler komutu altında birleşim sorguları ile çalışırken, Tasarım görünümü kullanılamaz olduğunu fark edeceksiniz. Yalnızca Veri sayfası görünümü ve SQL görünümü arasında birleşim sorguları ile çalışırken geçebilirsiniz.

Bu birleşim sorgusu Örneğin, incelemesi devam etmek için Giriş ' i tıklatın > Görünüm > tanımladığı SQL sözdizimi görüntülemek için SQL görünümü . Birleşim sorgusu yaptığınız çeşitli bölümlerine kolayca görebilmek için bu çizimde, bazı ek boşluk SQL ekledik.

Northwind örnek Access şablondan görsel örnek bir birleşim sorgusunun SQL Görünümü'nde.

Haydi ayrıntılı Northwind veritabanındaki Bu birleşim sorgusunun SQL sözdizimi incelemek:

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;

İlk ve bu SQL deyimini üçüncü parçaları aslında iki seçme sorgusunun kişilerdir. Bu sorgular iki farklı kayıt kümelerini alın; Ürün siparişleri tablosunu ve diğeri Ürün alışveriş tablosundaki birinden.

İkinci bu SQL deyimini Access'e bu sorguyu şu iki kayıt kümesi birleştirir UNION anahtar sözcüğü bölümüdür.

Bu SQL deyimini son bölümünü bir ORDER BY deyimi kullanarak sıralama birleştirilmiş kayıtlarını belirler. Bu örnekte, Access tüm kayıtları göre azalan düzende sipariş tarihi alanını sipariş.

Not: Birleşim sorguları her zaman Access'te salt okunur özelliktedir; Veri Sayfası Görünümü'nde tüm değerleri değiştiremezsiniz.

Oluşturma ve seçme sorgusunun birleştiren birleşim sorgusu oluşturma

Birleşim sorgusu için SQL sözdizimi SQL Görünümü'nde doğrudan yazarak oluşturabileceğiniz olsa da, seçme sorgusunun bölümleriyle içinde oluşturmak daha kolay. Ardından kopyalayın ve SQL bölümleri birleştirilmiş birleşim sorgusu yapıştırın.

Okuma adımları atlayın ve bunun yerine bir örnek izlemek isterseniz, sonraki bölüme birleşim sorgusu oluşturmanın bir örnek izleyinbakın.

  1. Oluştur sekmesinin Sorgular grubunda Sorgu Tasarımı'nı tıklatın.

  2. Tabloyu Göster iletişim kutusunda, dahil etmek istediğiniz alanları içeren tabloyu çift tıklatın. Tablo, sorgu tasarım penceresine eklenir.

  3. Tabloyu Göster iletişim kutusunu kapatın.

  4. Sorgu tasarımı penceresinde, eklemek istediğiniz alanları çift tıklatın. Alan seçtiğiniz gibi aynı sırada alanları, aynı sayıda eklemek, diğer seçme sorgusunun ekleme emin olun. Alan veri türlerini dikkatli dikkat ve alanları ile uyumlu veri türleri, birleştirme diğer sorgularda aynı konumda sahip olduklarından emin olun. Örneğin, beş alanları, ilki tarih/saat veri içeren, ilk seçme sorgunuz varsa, her birleştirme bir seçme sorgusu da ilki tarih/saat veri içeren, beş alanı olduğundan emin olun ve benzeri.

  5. İsteğe bağlı olarak, uygun ifadeleri alan kılavuzunun Ölçüt satırında yazarak alanlarınıza ölçüt ekleyin.

  6. Alanları ve alan ölçütlerini eklemeyi tamamladığınızda, seçme sorgusunu çalıştırıp bu sorgunun çıkışını gözden geçirmeniz gerekir. Tasarım sekmesinin Sonuçlar grubunda Çalıştır'a tıklayın.

  7. Sorguyu Tasarım görünümüne geçirin.

  8. Seçme sorgusunu kaydedin ve açık bırakın.

  9. Bu yordamı, birleştirmek istediğiniz her seçme sorgusu için yineleyin.

Select sorgularınızı oluşturduğunuz kaydettiğinize göre bunları birleştirerek için zaman yapılır. Bu adımda, kopyalama ve yapıştırma SQL deyimlerini birleşim sorgusu oluşturun.

  1. Oluştur sekmesinin Sorgular grubunda Sorgu Tasarımı'nı tıklatın.

  2. Tabloyu Göster iletişim kutusunu kapatın.

  3. Tasarım sekmesinde, sorgu grubunda, birleşim' i tıklatın. Access Sorgu tasarımı penceresinde gizler ve SQL görünümü nesne sekmesini gösterir. Bu noktada, SQL görünümü nesne sekmesi boştur.

  4. Birleşim sorgusuna birleştirmek istediğiniz ilk seçme sorgusunun sekmesini tıklatın.

  5. Giriş sekmesinde Görünüm> SQL Görünümü'ne tıklayın.

  6. Seçme sorgusu için SQL deyimini kopyalayın. Daha önce oluşturmak için çalışmaya birleşim sorgusu sekmesini tıklatın.

  7. Birleşim sorgusunun SQL görünümü nesne sekmesine, seçme sorgusunun SQL deyimini yapıştırın.

  8. Seçme sorgusu SQL ifadesinin sonundaki noktalı virgülü (;) silin.

  9. İmleci bir satır aşağı taşıma ve ardından yeni satıra UNION yazın, Enter tuşuna basın.

  10. Birleşim sorgusuna birleştirmek istediğiniz sonraki seçme sorgusunun sekmesini tıklatın.

  11. 5 ila 10 arası adımları, seçme sorgularının SQL deyimlerini birleşim sorgusunun SQL görünümü penceresine kopyalayıp yapıştırıncaya kadar yineleyin. Noktalı virgülü silmeyin ya da son seçme sorgusunun SQL deyiminden sonra bir şey yazmayın.

  12. Tasarım sekmesinin Sonuçlar grubunda Çalıştır'ı tıklatın.

Birleşim sorgunuzun sonuçları veri sayfası görünümünde gösterilir.

Birleşim sorgusu oluşturmanın bir örnek izleyin

İşte size bir örnek Northwind örnek veritabanında yeniden oluşturabilirsiniz. Bu birleşim sorgusu kişilerin adlarını Müşteriler tablosunda toplar ve bunları Üreticiler tablosundan kişilerin adlarını birleştirir. Northwind örnek veritabanında kopyanızı bölümünde bu adımlara takip etmek isterseniz, çalışın.

Northwind örnek Access şablonundaki birleşim sorgusu oluşturma görsel örneği.

Bu örnekte oluşturmak için gereken adımlar şunlardır:

  1. Sorgu1 ve sorgu2 müşteriler ve ürünler tablolarla veri kaynakları olarak sırasıyla adlı iki seçme sorgusunun oluşturun. Değerleri görüntüleme gibi bir ad ve Soyadı alanlarını kullanın.

  2. Başlangıçta hiçbir veri kaynağıyla Query3 adlı yeni bir sorgu oluşturun ve sonra bu sorguyu birleşim sorgusu yapmak için Tasarım sekmesindeki birleşim komutunu tıklatın.

  3. Kopyalama ve SQL deyimlerini Sorgu1 ve sorgu2 Query3 yapıştırın. Fazladan noktalı virgülü kaldırıp UNION anahtar sözcük eklemek emin olun. Veri Sayfası görünümünde sonuçlarınızı sonra denetleyebilirsiniz.

  4. Bir sıralama yan tümcesinde sorguları birini ekleyin ve ardından ORDER BY deyimi birleşim sorgusunu SQL görünümünde yapıştırın. Tablo adı alanına sonra alan adları sıralama hakkında eklenmesi için olduğunda Query3, birleşim sorgusu ilk noktalı kaldırıldığını, dikkat edin.

  5. Bir araya getirir ve bu birleşim sorgusu örneğin adlarını sıralar son SQL aşağıdaki gibidir:

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

Çok rahat kendi SQL kesinlikle yazabilirsiniz SQL sözdizimi yazma bildirimi doğrudan birleşim sorgusu için SQL görüntüleyin. Bununla birlikte, diğer sorgu nesnelerden SQL yapıştırarak, bir yaklaşım izlemek yararlı bulabilirsiniz. Her sorgu burada kullanılan basit bir seçme sorgusu örnekler çok daha karmaşık olabilir. Oluşturma ve birleşim sorgusuna birleştirmek önce her sorgu dikkatle sınamak için sizin için olabilir. Birleşim sorgusunu çalıştırmayı başarısız olursa, açamıyor ve sonra düzeltilmiş sözdizimi birleşim sorgunuzu yeniden kadar her sorgu ayrı ayrı ayarlayabilirsiniz.

İpuçları ve püf noktaları birleşim sorguları kullanma hakkında daha fazla bilgi edinmek için bu makalenin kalan bölümleri gözden geçirin.

Northwind veritabanını kullanarak önceki bölümdeki örnekte, yalnızca iki tablodan veri birleştirilir. Bununla birlikte, üç veya daha fazla tablo Birleşim sorgusundaki çok kolayca birleştirebilirsiniz. Örneğin, önceki örneği oluşturma, ayrıca çalışanların adlarını sorgu çıktıda isteyebilirsiniz. Bu görevi üçüncü sorgu ekleyerek ve önceki SQL deyimini ek UNION anahtar sözcüğü böyle ile birlikte birleştirme görevleri gerçekleştirebilirsiniz:

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

Sonuç veri sayfası görünümünde gördüğünüzde, büyük olasılıkla çok yararlı değildir örnek şirket adı tüm çalışanları listelenir. Bir kişi, bir sağlayıcı veya bir müşteri şirket içi bir çalışan olup olmadığını belirtmek için bu alana isterseniz, bir sabit değer şirket adı yerine ekleyebilirsiniz. İşte nasıl SQL gibi görünebilir:

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

Burada, veri sayfası görünümünde nasıl sonuç görüntülenir. Access bu beş örnek kayıtları görüntüler:

İşe alma

Soyadı

Adı

Şirket içi

Yılmaz

Gamze

Şirket içi

Giussani

Pınar

Sağlayıcı

Glasson

Çalışan

Müşteri

Goldschmidt

Daniel

Müşteri

Giresunlu

Antonio

Yukarıdaki sorgu daha fazla Access Birleşim sorgusundaki ilk sorgudaki çıkış alanlarını adlarını yalnızca okur beri azaltılabilir. Buraya çıktının ikinci ve üçüncü sorgu bölümlerden kaldırdıktan bakın:

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

Access Birleşim sorgusunda, sıralamasını yalnızca bir kez izin verilir, ancak her sorgu tek tek filtrelenebilir. Her yere biz hiçbirini örnek sorgu bir WHERE tümcesi ekleyerek önceki bölümün Birleşim sorgusundaki, burada oluşturma.

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

Geçiş için veri sayfası görünümü ve buna benzer sonuçlar görürsünüz:

İşe alma

Soyadı

Adı

Sağlayıcı

Andersen

Ayşegül a

Şirket içi

Yılmaz

Gamze

Müşteri

Hasselberg

Jonas

Şirket içi

Özkan

Deniz

Sağlayıcı

Hernandez Echevarria

Amaya

Müşteri

Mortensen

Sven

Sağlayıcı

Sandberg

Mikael

Sağlayıcı

Koçak

Haluk

Şirket içi

Arslan

Kerim

Sağlayıcı

Weiler

Cornelia

Şirket içi

Ünal

Buğra

Birleşim sorguları çok farklı ise, çıkış alanı veri farklı veri türlerini nerede birleştirmeniz gerekir bir durumla karşılaşabilirsiniz. Şimdi, birleşim sorgusu en sık verip vermeyeceğini sonuçları metin veri olarak bu yana iki metin ve sayı veri türü barındırabilir yazın.

Bunun nasıl çalıştığını anlamak için Ürün hareketleri birleşim sorgusu Northwind örnek veritabanında kullanacağız. Bu örnek veritabanını açın ve ardından ürün hareketleri sorguyu veri sayfası görünümünde açın. Son on kayıtları bu çıktısına benzer olmalıdır:

Ürün Kimliği

Sipariş Tarihi

Şirket Adı

İşlem

Miktar

77

22/1/2006

Sağlayıcı B

Satın Al

60

80

22/1/2006

Sağlayıcı D

Satın Al

75

81

22/1/2006

Sağlayıcı A

Satın Al

125

81

22/1/2006

Sağlayıcı A

Satın Al

200

7

20/1/2006

Şirket D

Satış

10

51

20/1/2006

Şirket D

Satış

10

80

20/1/2006

Şirket D

Satış

10

34

1/15/2006

Şirket AA

Satış

100

80

1/15/2006

Şirket AA

Satış

30

İkiye - satın alın ve satış miktarı alanı bölmek istediğiniz varsayalım. Ayrıca bir sabit olmasını istediğiniz varsayalım sıfır değerini alan için hiçbir değeri. İşte bu birleşim sorgusu için SQL nasıl görüneceğ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; 

Veri Sayfası görünümüne geçiş yapıyorsanız, şimdi aşağıdaki gibi görüntülenen son on kayıtlar görürsünüz:

Ürün Kimliği

Sipariş Tarihi

Şirket Adı

İşlem

Satın alma

Satış

74

22/1/2006

Sağlayıcı B

Satın Al

20

0

77

22/1/2006

Sağlayıcı B

Satın Al

60

0

80

22/1/2006

Sağlayıcı D

Satın Al

75

0

81

22/1/2006

Sağlayıcı A

Satın Al

125

0

81

22/1/2006

Sağlayıcı A

Satın Al

200

0

7

20/1/2006

Şirket D

Satış

0

10

51

20/1/2006

Şirket D

Satış

0

10

80

20/1/2006

Şirket D

Satış

0

10

34

1/15/2006

Şirket AA

Satış

0

100

80

1/15/2006

Şirket AA

Satış

0

30

Bu örnekte etmeden, alanları sıfır boş olmasını isterseniz ne? Aşağıdaki gibi Null anahtar sözcüğü ekleyerek sıfır yerine hiçbir şey görüntülemek için SQL değiştirebilirsiniz:

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;

Bununla birlikte, veri sayfası görünümüne geçiş gözlemlenen gibi şimdi beklenmeyen bir sonuç vardır. Satın Al sütununda, her alanın kaldırılır:

Ürün Kimliği

Sipariş Tarihi

Şirket Adı

İşlem

Satın alma

Satış

74

22/1/2006

Sağlayıcı B

Satın Al

77

22/1/2006

Sağlayıcı B

Satın Al

80

22/1/2006

Sağlayıcı D

Satın Al

81

22/1/2006

Sağlayıcı A

Satın Al

81

22/1/2006

Sağlayıcı A

Satın Al

7

20/1/2006

Şirket D

Satış

10

51

20/1/2006

Şirket D

Satış

10

80

20/1/2006

Şirket D

Satış

10

34

1/15/2006

Şirket AA

Satış

100

80

1/15/2006

Şirket AA

Satış

30

Bu durumun oluştuğu nedeni, ilk sorgudaki alanları veri türlerini erişimi belirleyen olmamasıdır. Bu örnekte, boş bir sayı değil.

Deneyin ve boş değer alanları için boş bir dize ekleme olursa ne olur? Bu denemesi için SQL aşağıdaki gibi görünebilir:

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;

Veri Sayfası görünümüne geçiş yaptığınızda, Access satın değerleri alır, ancak bunu değerleri metne dönüştürülür görürsünüz. Veri Sayfası görünümünde sola hizalanmış olduğundan metin değerlerini alanlarıdır anlayabilirsiniz. Boş bir dize ilk sorgudaki şu sonuçları görmek neden olan bir sayı değil. Ayrıca, boş bir dize bulunduğundan, satın alma kayıtları satış değerleri de metne dönüştürülür görürsünüz.

Ürün Kimliği

Sipariş Tarihi

Şirket Adı

İşlem

Satın alma

Satış

74

22/1/2006

Sağlayıcı B

Satın Al

20

77

22/1/2006

Sağlayıcı B

Satın Al

60

80

22/1/2006

Sağlayıcı D

Satın Al

75

81

22/1/2006

Sağlayıcı A

Satın Al

125

81

22/1/2006

Sağlayıcı A

Satın Al

200

7

20/1/2006

Şirket D

Satış

10

51

20/1/2006

Şirket D

Satış

10

80

20/1/2006

Şirket D

Satış

10

34

1/15/2006

Şirket AA

Satış

100

80

1/15/2006

Şirket AA

Satış

30

Peki nasıl bu yapbozu çözme?

Bir sayı olması için alan değerine bekleyebilirsiniz sorguyu zorlamak için bir çözüm olur. Bu ifadenin yapılabilir:

IIf(False, 0, Null)

Koşulu denetleyin, yanlış, hiçbir zaman doğruolur, böylece ifade her zaman Nulldöner, ancak Access hala iki çıktı seçenekleri değerlendirir ve sayısal veya Null olarak çıktı karar verir.

İşte Biz bu ifade çalışma örneğimizde nasıl kullanabilirsiniz:

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;

İkinci sorguyu değiştirmek gerekli olmadığını göz önünde bulundurun.

Veri Sayfası görünümüne geçiş yapıyorsanız, şimdi istediğimiz bir sonucu görürsünüz:

Ürün Kimliği

Sipariş Tarihi

Şirket Adı

İşlem

Satın alma

Satış

74

22/1/2006

Sağlayıcı B

Satın Al

20

77

22/1/2006

Sağlayıcı B

Satın Al

60

80

22/1/2006

Sağlayıcı D

Satın Al

75

81

22/1/2006

Sağlayıcı A

Satın Al

125

81

22/1/2006

Sağlayıcı A

Satın Al

200

7

20/1/2006

Şirket D

Satış

10

51

20/1/2006

Şirket D

Satış

10

80

20/1/2006

Şirket D

Satış

10

34

1/15/2006

Şirket AA

Satış

100

80

1/15/2006

Şirket AA

Satış

30

Aynı sonucu elde etmek için alternatif bir yöntem henüz başka bir sorguyla birleşim sorgusu sorgularda önüne ekleyin tıklatmaktır:

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

Access her alan için tanımladığınız veri türü sabit değerleri döndürür. Şüphesiz, bu sorguyu bir WHERE tümcesi false eklemek için bunu önlemek için eli olacak şekilde sonuçlarıyla müdahale çıkışını istemiyorsanız:

WHERE False

Bunu her zaman false'tur ve ardından sorguyu herhangi bir şey dönmez beri biraz eli budur. Varolan SQL ile bu bildirimi birleştirme ve biz tamamlanmış bir ifadede aşağıdaki gibi ulaşır:

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;

Not: İki ayrı sorguları 58 ve 43 kayıtları 101 kayıtları toplam döndürürken birleştirilmiş sorgu burada Northwind veritabanını kullanarak bu örnekte 100 kayıtları getirir. İki kaydı benzersiz olmadığından bu tutarsızlık neden olmasıdır. UNION ALL kullanarak bu senaryoyu çözmeyi öğrenmek için UNION ALL kullanarak birleşim sorguları DISTINCT kayıtlarla çalışmabölümüne bakın.

Kayıtları bir veya daha fazla alan toplamını içeren bir kayıt kümesi birleştirmek için birleşim sorgusu için özel bir durum oluşturur.

Aşağıda, Birleşim sorgusundaki toplam alma işlemini göstermek için Northwind örnek veritabanında oluşturabilirsiniz başka bir örnek verilmiştir.

  1. Beers satın görüntülemek için Yeni Basit Sorgu oluşturma (ürün kimliği Northwind veritabanındaki 34 =) aşağıdaki SQL sözdizimi kullanarak:

    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. Geçiş için veri sayfası görünümü ve dört satınalmaları görmeniz gerekir:

    Alınan tarih

    Miktar

    22/1/2006

    100

    22/1/2006

    60

    4/4/2006

    50

    4/5/2006

    300

  3. Toplam elde etmek için aşağıdaki SQL kullanarak basit aggregating sorgusu oluşturun:

    SELECT Max([Date Received]), Sum([Quantity]) AS SumOfQuantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
  4. Geçiş için veri sayfası görünümü ve tek bir kayıt görmeniz gerekir:

    Alınan MaxOfDate

    MiktarToplamı

    4/5/2006

    510

  5. Birleşim sorgusu toplam miktara kayıtla satın kayıtları eklemek için bu iki sorgunun birleştirin:

    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. Geçiş için veri sayfası görünümü ve her bir kaydı tarafından miktarını toplar ve ardından toplamı ile dört satınalmaları görmeniz gerekir:

    Alınan tarih

    Miktar

    22/1/2006

    60

    22/1/2006

    100

    4/4/2006

    50

    4/5/2006

    300

    4/5/2006

    510

Bu, birleşim sorgusu toplamları ekleme temellerini kapsar. Görsel olarak toplam kaydı diğer kayıtlarından ayırmak için "Ayrıntı" ve "Toplam" gibi her iki sorgularında sabit değerler eklemek isteyebilirsiniz. Üç veya daha fazla tabloları veya sorguları Birleşim sorgusundaki birleştirmebölümündeki sabit değerler kullanarak gözden geçirebilirsiniz.

Access'te birleşim sorguları varsayılan olarak yalnızca ayrı kayıtları içerir. Ancak, tüm kayıtları dahil etmek istediğiniz ne yapmalıyım? Başka bir örnek burada yararlı olabilir.

Önceki bölümde biz, toplam Birleşim sorgusundaki nasıl oluşturulacağını gösterir. Bu birleşim sorgusu SQL ürün kimliği içerecek şekilde değiştirme 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];

Geçiş için veri sayfası görünümü ve bir miktar yanıltıcı sonuç görmeniz gerekir:

Alınan tarih

Miktar

22/1/2006

100

22/1/2006

200

Bir kaydı tabi toplam miktar iki kez döndürmez.

Bir günü çikolata aynı miktarı iki kez - satıldığı bu sonucu görmek nedeni satın alma sipariş ayrıntıları tablosunda kayıtlı olan olmamasıdır. Northwind örnek veritabanında her iki kaydı gösteren bir basit seçme sorgusu sonuç şudur:

Satın alma Sipariş No

Ürün

Miktar

100

Northwind Traders Çikolata

100

92

Northwind Traders Çikolata

100

Daha önce belirtildiği birleşim sorgusuna, Sipariş No alanında dahil edilmez ve iki ayrı kayıtlarını iki alan yapma görebilirsiniz.

Tüm kayıtları dahil etmek istiyorsanız, birleşim SQL içinde yerine UNION ALL kullanın. Bu çoğunlukla olasılıkla sıralama düzenini belirlemek için ORDER BY yan da eklemek isteyebilirsiniz böylece sonuçlarını sıralama üzerindeki etkisi olmayacaktır. Önceki örnekte kapalı değiştirilmiş SQL yapı aşağıdadır:

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

Geçiş için veri sayfası görünümü ve toplam yanı sıra tüm ayrıntıları son kayıt görmelisiniz:

Alınan tarih

Toplam

Miktar

22/1/2006

100

22/1/2006

100

22/1/2006

Toplam

200

Birleşim sorgusu için ortak kullanım form üzerindeki birleşik giriş kutusu denetimi için kayıt kaynağı olarak hizmet tıklatmaktır. Formun kayıtlara filtre uygulamak için bir değer seçmek için o birleşik giriş kutusu kullanabilirsiniz. Örneğin, bunların şehre göre çalışan kayıtlara filtre uygulama.

Bunu nasıl işinize yarayabilecek görmek için aşağıda bu senaryoyu göstermek için Northwind örnek veritabanında oluşturabilirsiniz başka bir örnek verilmiştir.

  1. Bu SQL sözdizimi kullanarak basit bir seçme sorgusu oluşturun:

    SELECT Employees.City, Employees.City AS Filter
    FROM Employees;
  2. Geçiş için veri sayfası görünümü ve aşağıdaki sonuçları görmeniz gerekir:

    Şehir

    Filtre

    Seattle

    Seattle

    Balıkesir

    Balıkesir

    Redmond

    Redmond

    Bursa

    Bursa

    Seattle

    Seattle

    Redmond

    Redmond

    Seattle

    Seattle

    Redmond

    Redmond

    Seattle

    Seattle

  3. Aramanız bu sonuçlar çok değerinin görmeyebilirsiniz. Sorgu olsa bile genişletin ve aşağıdaki SQL kullanarak bir birleşim sorgusuna dönüştürün:

    SELECT Employees.City, Employees.City AS Filter
    FROM Employees
    
    UNION
    
    SELECT "<All>", "*" AS Filter
    FROM Employees
    
    ORDER BY City;
  4. Geçiş için veri sayfası görünümü ve aşağıdaki sonuçları görmeniz gerekir:

    Şehir

    Filtre

    < tüm >

    *

    Balıkesir

    Balıkesir

    Bursa

    Bursa

    Redmond

    Redmond

    Seattle

    Seattle

    Access dokuz kayıtların, daha önce gösterilen, < tüm > Sabit alan değerlerle bir birleşim gerçekleştirir ve "*".

    Bu birleşim yan tümcesi UNION ALL içermez olduğundan, Access her şehir ile özdeş sabit değerler yalnızca bir kez döndürülür anlamına gelen sadece farklı kayıtları döndürür.

  5. Artık yalnızca bir seçenek birlikte, etkili bir şekilde tüm şehirleri seçtikten sonra her şehir adının görüntülendiği tamamlanmış birleşim sorgusu olduğundan, form üzerindeki birleşik giriş kutusu için kayıt kaynağı olarak bu sorguyu kullanabilirsiniz. Bu belirli bir örnek model olarak kullanarak, formun kayıt kaynağı bu sorguyu ayarlama, görsel olarak gizlemek için 0 (sıfır) filtre sütunun sütun genişliğini özelliğini ayarlayın ve sonra dizini belirtmek için 1'e bağlı sütununun özelliğini ayarlayın, birleşik giriş kutusu denetimi oluşturabilirsiniz ikinci sütunu. Form filtre özelliğindeki kodu belirlemiş birleşik giriş kutusu denetimine değerini kullanarak bir form filtresi etkinleştirmek için aşağıdaki gibi daha sonra ekleyebilirsiniz:

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

    Formunun kullanıcısı belirli Şehir adının üzerine form kayıtlara filtre uygulamak veya < tümü > tüm kayıtlar için tüm şehirleri listelemek için seçin.

Sayfanın Başı

Office yeteneklerinizi geliştirin
Eğitimleri keşfedin
Yeni özellikleri ilk olarak siz edinin
Office Insider Programına Katılın

Bu bilgi yararlı oldu mu?

Görüşleriniz için teşekkür ederiz!

Geri bildiriminiz için teşekkürler! Office destek temsilcilerimizden biriyle görüşmeniz yararlı olabilir.

×