Microsoft hesabıyla oturum açın
Oturum açın veya hesap oluşturun.
Merhaba,
Farklı bir hesap seçin.
Birden çok hesabınız var
Oturum açmak istediğiniz hesabı seçin.

Bazen bir sorgunun sonuçlarını başka bir sorguda alan olarak veya sorgu alanının ölçütü olarak kullanmak isteyebilirsiniz. Örneğin, ürünlerinizin her biri için siparişler arasındaki aralığı görmek istediğinizi varsayalım. Bu aralığı gösteren bir sorgu oluşturmak için, her sipariş tarihini ilgili ürünün diğer sipariş tarihleriyle karşılaştırmanız gerekir. Bu sipariş tarihlerini karşılaştırmak için de sorgu gerekir. alt sorgu kullanarak bu sorguyu ana sorgunuzun içine iç içe yerleştirebilirsiniz.

bir ifade veya SQL görünümü içindeki bir Yapılandırılmış Sorgu Dili (SQL) deyiminde bir alt sorgu yazabilirsiniz.

Bu makalenin başlıkları

Sorgunun sonuçlarını başka bir sorguda alan olarak kullanma

Alan diğer adı olarak bir alt sorgu kullanabilirsiniz. Alt sorgu sonuçlarını ana sorgunuzda alan olarak kullanmak istediğinizde bir alt sorguyu alan diğer adı olarak kullanın.

Not: Alan diğer adı olarak kullandığınız bir alt sorgu birden fazla alan döndüremez.

Geçerli satırdaki diğer değerlere bağımlı olan değerleri görüntülemek için bir alt sorgu alanı diğer adı kullanabilirsiniz. Bu, alt sorgu kullanmadan mümkün değildir.

Örneğin, ürünlerinizin her biri için siparişler arasındaki aralığı görmek istediğiniz örne geri dönelim. Bu aralığı belirlemek için, her sipariş tarihini ilgili ürünün diğer sipariş tarihleriyle karşılaştırmanız gerekir. Northwind veritabanı şablonunu kullanarak bu bilgileri gösteren bir sorgu oluşturabilirsiniz.

  1. Dosya sekmesinde Yeni'yi tıklatın.

  2. Kullanılabilir Şablonlar'ın altında Örnek Şablonlar'a tıklayın.

  3. Northwind'e ve ardından Oluştur'a tıklayın.

  4. Veritabanını açmak için Northwind Traders sayfasındaki (Başlangıç Ekranı nesnesi sekmesinde) yönergeleri izleyin ve sonra Oturum Açma İletişim Kutusu penceresini kapatın.

  5. Oluştur sekmesinin Sorgular grubunda Sorgu Tasarımı üzerine tıklayın.

  6. Sorgular sekmesine tıklayın ve ardından Ürün Siparişleri'ne çift tıklayın.

  7. Ürün Kimliği alanına ve Sipariş Tarihi alanına çift tıklayarak bunları sorgu tasarım kılavuzuna ekleyin.

  8. Kılavuzun Ürün Kimliği sütununun Sıralama satırında Artan'ı seçin.

  9. Kılavuzun Sipariş Tarihi sütununun Sıralama satırında Azalan'ı seçin.

  10. Kılavuzun üçüncü sütununda Alan satırına sağ tıklayın ve kısayol menüsünde Yakınlaştır'a tıklayın.

  11. Yakınlaştır iletişim kutusunda aşağıdaki ifadeyi yazın veya yapıştırın:

    Prior Date: (SELECT MAX([Order Date]) 
    FROM [Product Orders] AS [Old Orders]
    WHERE [Old Orders].[Order Date] < [Product Orders].[Order Date]
    AND [Old Orders].[Product ID] = [Product Orders].[Product ID])

    Bu ifade alt sorgudur. Her satır için alt sorgu, satırla zaten ilişkilendirilmiş olan sipariş tarihinden daha az yeni olan en son sipariş tarihini seçer. Alt sorgudaki değerleri ana sorgunun geçerli satırındaki değerlerle karşılaştırabilmek için AS anahtar sözcüğünü kullanarak tablo diğer adı oluşturduğunuza dikkat edin.

  12. Kılavuzun dördüncü sütunundaki Alan satırına aşağıdaki ifadeyi yazın:

    Interval: [Order Date]-[Prior Date]

    Bu ifade, bir alt sorgu kullanarak tanımladığımız önceki tarih değerini kullanarak her sipariş tarihi ile bu ürünün önceki sipariş tarihi arasındaki aralığı hesaplar.

  13. Tasarım sekmesinin Sonuçlar grubunda Çalıştır'a tıklayın.

    1. Sorgu çalışır ve ürün adlarının, sipariş tarihlerinin, önceki sipariş tarihlerinin ve sipariş tarihleri arasındaki aralığın listesini görüntüler. Sonuçlar önce Ürün Kimliğine (artan düzende) ve ardından Sipariş Tarihine (azalan düzende) göre sıralanır.

    2. Not: Ürün Kimliği varsayılan olarak bir arama alanı olduğundan, Access gerçek Ürün Kimlikleri yerine arama değerlerini (bu örnekte ürün adı) görüntüler. Bu, görüntülenen değerleri değiştirse de sıralama düzenini değiştirmez.

  14. Northwind veritabanını kapatın.

Sayfanın Başı

Sorgu alanı için ölçüt olarak alt sorgu kullanma

Alan ölçütü olarak bir alt sorgu kullanabilirsiniz. Alanın görüntülediği değerleri sınırlamak için alt sorgunun sonuçlarını kullanmak istediğinizde, bir alt sorguyu alan ölçütü olarak kullanın.

Örneğin, satış temsilcisi olmayan çalışanlar tarafından işlenen siparişlerin listesini gözden geçirmek istediğinizi varsayalım. Bu listeyi oluşturmak için, her siparişin çalışan kimliğini satış temsilcisi olmayan çalışanların çalışan kimliklerinin listesiyle karşılaştırmanız gerekir. Bu listeyi oluşturmak ve alan ölçütü olarak kullanmak için, aşağıdaki yordamda gösterildiği gibi bir alt sorgu kullanırsınız:

  1. Northwind.accdb dosyasını açın ve içeriğini etkinleştirin.

  2. Oturum açma formunu kapatın.

  3. Oluştur sekmesinin Diğer grubunda Sorgu Tasarımı'na tıklayın.

  4. Tablolar sekmesinde Siparişler ve Çalışanlar'a çift tıklayın.

  5. Siparişler tablosunda Çalışan Kimliği alanına, Sipariş Kimliği alanına ve Sipariş Tarihi alanına çift tıklayarak bunları sorgu tasarım kılavuzuna ekleyin. Çalışanlar tablosunda , proje başlığı alanına çift tıklayarak tasarım kılavuzuna ekleyin.

  6. Çalışan Kimliği sütununun Ölçüt satırına sağ tıklayın ve kısayol menüsünde Yakınlaştır'a tıklayın.

  7. Yakınlaştır kutusuna aşağıdaki ifadeyi yazın veya yapıştırın:

    IN (SELECT [ID] FROM [Employees] 
    WHERE [Job Title]<>'Sales Representative')

    Bu alt sorgudur. Çalışanın Satış Temsilcisi iş unvanına sahip olmadığı tüm çalışan kimliklerini seçer ve sonuçta ana sorguya ayarlanan malzemeleri sağlar. Ardından ana sorgu, Siparişler tablosundaki çalışan kimliklerinin sonuç kümesinde olup olmadığını denetler.

  8. Tasarım sekmesinin Sonuçlar grubunda Çalıştır'a tıklayın.

    Sorgu çalıştırılır ve sorgu sonuçları satış temsilcisi olmayan çalışanlar tarafından işlenen siparişlerin listesini gösterir.

Sayfanın Başı

Bir alt sorguyla kullanabileceğiniz yaygın SQL anahtar sözcükleri

Bir alt sorguyla kullanabileceğiniz birkaç SQL anahtar sözcüğü vardır:

Not: Bu liste kapsamlı değil. Veri tanımı anahtar sözcükleri hariç olmak üzere bir alt sorguda herhangi bir geçerli SQL anahtar sözcüğünü kullanabilirsiniz.

  • TÜM    Bir WHERE yan tümcesinde, alt sorgu tarafından döndürülen her satırla karşılaştırıldığında koşulu karşılayan satırları almak için ALL kullanın.

    Örneğin, bir üniversitede öğrenci verilerini analiz ettiğinizi varsayalım. Öğrenciler, ana daldan ana dala kadar değişen en düşük gpA'yı korumalıdır. Branşlar ve en düşük not ortalamaları Majors adlı bir tabloda depolanır ve ilgili öğrenci bilgileri Student_Records adlı bir tabloda depolanır.

    Bu ana daldaki her öğrencinin en düşük GPA'yı aştığı branşların (ve en düşük GPA'larının) listesini görmek için aşağıdaki sorguyu kullanabilirsiniz:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] < ALL
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);
  • HERHANGİ Bİrİ    Alt sorgu tarafından döndürülen satırlardan en az biriyle karşılaştırıldığında koşulu karşılayan satırları almak için WHERE yan tümcesinde ANY kullanın.

    Örneğin, bir üniversitede öğrenci verilerini analiz ettiğinizi varsayalım. Öğrenciler, ana daldan ana dala kadar değişen en düşük gpA'yı korumalıdır. Branşlar ve en düşük not ortalamaları Majors adlı bir tabloda depolanır ve ilgili öğrenci bilgileri Student_Records adlı bir tabloda depolanır.

    Bu branşa sahip herhangi bir öğrencinin en düşük GPA'yı karşılamadığı branşların (ve en düşük GPA'larının) listesini görmek için aşağıdaki sorguyu kullanabilirsiniz:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] > ANY
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);

    Not: SOME anahtar sözcüğünü de aynı amaç için kullanabilirsiniz; SOME anahtar sözcüğü ANY ile eş anlamlıdır.

  • EXISTS     Bir alt sorgunun en az bir satır döndürmesi gerektiğini belirtmek için WHERE yan tümcesinde EXISTS kullanın. Ayrıca, bir alt sorguda satır döndürülmemesi gerektiğini belirtmek için NOT ile EXISTS önsözünü de kullanabilirsiniz.

    Örneğin, aşağıdaki sorgu en az bir mevcut sırada bulunan ürünlerin listesini döndürür:

    SELECT *
    FROM [Products]
    WHERE EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);

    YOK kullanıldığında, sorgu en az bir mevcut sırada bulunmayan ürünlerin listesini döndürür:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • INÇ    Ana sorgunun geçerli satırındaki bir değerin alt sorgunun döndürdüğü kümenin parçası olduğunu doğrulamak için WHERE yan tümcesinde IN kullanın. Ayrıca, ana sorgunun geçerli satırındaki bir değerin alt sorgunun döndürdüğü kümenin bir parçası olmadığını doğrulamak için DEĞİl ile birlikte IN önsözü oluşturabilirsiniz.

    Örneğin, aşağıdaki sorgu satış temsilcisi olmayan çalışanlar tarafından işlenen siparişlerin listesini (sipariş tarihleriyle) döndürür:

    SELECT [Order ID], [Order Date]
    FROM [Orders]
    WHERE [Employee ID] IN
    (SELECT [ID] FROM [Employees]
    WHERE [Job Title]<>'Sales Representative');

    NOT IN kullanarak aynı sorguyu şu şekilde yazabilirsiniz:

    SELECT [Order ID], [Order Date]
    FROM [Orders]
    WHERE [Employee ID] NOT IN
    (SELECT [ID] FROM [Employees]
    WHERE [Job Title]='Sales Representative');

Sayfanın Başı

Daha fazla yardıma mı ihtiyacınız var?

Daha fazla seçenek mi istiyorsunuz?

Abonelik avantajlarını keşfedin, eğitim kurslarına göz atın, cihazınızın güvenliğini nasıl sağlayacağınızı öğrenin ve daha fazlasını yapın.

Topluluklar, soru sormanıza ve soruları yanıtlamanıza, geri bildirimde bulunmanıza ve zengin bilgiye sahip uzmanlardan bilgi almanıza yardımcı olur.

Bu bilgi yararlı oldu mu?

Dil kalitesinden ne kadar memnunsunuz?
Deneyiminizi ne etkiledi?
Gönder’e bastığınızda, geri bildiriminiz Microsoft ürün ve hizmetlerini geliştirmek için kullanılır. BT yöneticiniz bu verileri toplayabilecek. Gizlilik Bildirimi.

Geri bildiriminiz için teşekkürler!

×