Alt sorgu kullanarak bir sorguyu başka bir sorgunun veya bir ifadenin içine yerleştirme

Önemli : Bu makale makine çevisidir. Bkz. yasal uyarı. Bu makalenin İngilizce sürümüne buradan ulaşabilirsiniz.

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

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

Bu makalede

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

Alt sorguyu bir sorgu alanı için ölçüt olarak kullanma

Alt sorguda kullanabileceğiniz genel SQL anahtar sözcükleri

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

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

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

Alt sorgu kullanmadan yapmak mümkün değildir geçerli satırdaki diğer değerlere bağlı değerler görüntülemek için alt sorgu alan diğer adı kullanabilirsiniz. Örneğin, bize örneği her ürünlerinizin siparişler arasındaki aralık görmek istediğiniz dönün. Bu zaman aralığından belirlemek için her sipariş tarihi için bu ürüne yönelik diğer sipariş tarihleriyle karşılaştırmak gerekir. Northwind 2007 şablonu kullanarak bu bilgileri gösteren bir sorgu oluşturabilirsiniz.

Northwind 2007'nin nasıl ayarlandığını bana göster

  1. Microsoft Office Düğmesi'ne düğme resmi tıklayın ve ardından Yeni'ye tıklayın.

  2. Sol bölmede, Şablon Kategorileri'nin altında Yerel Şablonlar'ı tıklatın.

  3. Yerel Şablonlar'ın altında Northwind 2007'yi ve sonra da Oluştur'u tıklatı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.

  1. Oluştur sekmesinde, Diğer grubunda, Sorgu Tasarımı'nı tıklatın.

  2. Tabloyu Göster iletişim kutusunda, Sorgular sekmesini tıklatın ve sonra Ürün Siparişleri'ni tıklatın.

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

  4. Sorgu tasarım kılavuzuna eklemek üzere Ürün No alanını ve Sipariş Tarihi alanını çift tıklatın.

  5. Kılavuzun Ürün No sütununun Sıralama satırında, Artan'ı seçin.

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

  7. Kılavuzun üçüncü sütununda Alan satırını sağ tıklatın ve ardından kısayol menüsünde Yakınlaştır'ı tıklatın.

  8. Yakınlaştırma 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 ilişkili olan sipariş tarihinden daha eski olan en yeni 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 nasıl bir tablo diğer adı oluşturduğunuza dikkat edin.

  9. Kılavuzun dördüncü sütununda, Alan satırında, aşağıdaki ifadeyi yazın:

Interval: [Order Date]-[Prior Date]

Bu ifade, ürünün her sipariş tarihi ile önceki sipariş tarihini karşılaştırır ve bunu yaparken önceki tarih için alt sorgu kullanarak tanımladığımız değeri kullanır.

  1. Tasarım sekmesinde, Sonuçlar grubunda, Çalıştır'ı tıklatın.

    Sorgu çalışır ve ürün adlarını, sipariş tarihlerini, önceki sipariş tarihlerini ve sipariş tarihleri arasındaki süreleri içeren bir liste görüntüler. Sonuçlar önce Ürün No'ya (artan sıra) ve sonra Sipariş Tarihi'ne (azalan sıra) göre sıralanır.

    Not : Ürün No varsayılan olarak bir arama alanı olduğundan, Access asıl Ürün No değerleri 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.

  2. NorthWind veritabanını kapatın.

Sayfanın Başı

Alt sorguyu bir sorgu alanı için ölçüt olarak kullanma

Bir alt sorguyu alan ölçütü olarak kullanabilirsiniz. Alt sorgunun sonuçlarını bir alanın görüntülediği değerleri sınırlamak için kullanmak istediğinizde 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 kabul edelim. Bu listeyi oluşturmak için, her sipariş için çalışan kimliğini satış temsilcisi olmayan çalışanların çalışan kimliklerini içeren bir listeyle karşılaştırmanız gerekir. Bu listesi 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 2007.accdb'yi açın ve içeriğini etkinleştirin.

  2. Oturum açma formunu kapatın.

  3. Oluştur sekmesinde, Diğer grubunda, Sorgu Tasarımı'nı tıklatın.

  4. Tabloyu Göster iletişim kutusunda, Tablolar sekmesinde, Siparişler'i ve Çalışanlar'ı çift tıklatın.

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

  6. Siparişler tablosunda, Çalışan No alanını, Sipariş No alanını ve Sipariş Tarihi alanını çift tıklatarak sorgu tasarım kılavuzuna ekleyin. Çalışanlar tablosunda, İş Unvanı alanını çift tıklatarak tasarım kılavuzuna ekleyin.

  7. Çalışan No sütununun Ölçüt satırını sağ tıklatın ve kısayol menüsünde Yakınlaştır'ı tıklatın.

  8. 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. İş unvanı Satış Temsilcisi olmayan tüm çalışanların çalışan no'larını seçer ve bu sonuç kümesini ana sorguya sağlar. Ana sorgu da Siparişler tablosundaki çalışan no'larının sonuç kümesinde bulunup bulunmadığına bakar.

  9. Tasarım sekmesinde, Sonuçlar grubunda, Çalıştır'ı tıklatın.

    Sorgu çalışır ve sorgu sonuçları satış temsilcisi olmayan çalışanlar tarafından işlenmiş olan siparişlerin listesini görüntüler.

Sayfanın Başı

Alt sorguda kullanabileceğiniz genel SQL anahtar sözcükleri

Alt sorguyla kullanabileceğiniz birkaç SQL anahtar sözcüğü vardır.

Not : Bu liste tümünü kapsamaz. Veri tanımlama anahtar sözcükleri hariç olmak üzere herhangi bir geçerli SQL anahtar sözcüğünü kullanabilirsiniz.

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

    Örneğin, bir üniversitede öğrenci verilerini çözümlediğinizi kabul edelim. Öğrencilerin, branştan branşa değişen bir en düşük not ortalamasını tutturmaları gerekmektedir. Branşlar ve en düşük not ortalamaları Branşlar adlı bir tabloda depolanmaktadır ve ilgili öğrenci bilgileri Öğrenci_Kayıtları adlı bir tabloda depolanmaktadır.

    Her öğrencinin en düşük not ortalamasını aştığı branşların (en düşük not ortalamaları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]);
  • ANY    Alt sorgu tarafından döndürülen satırlardan en az biriyle karşılaştırıldığında koşulu sağlayan satırları almak için WHERE yan tümcesinde ANY kullanın.

    Örneğin, bir üniversitede öğrenci verilerini çözümlediğinizi kabul edelim. Öğrencilerin, branştan branşa değişen bir en düşük not ortalamasını tutturmaları gerekmektedir. Branşlar ve en düşük not ortalamaları Branşlar adlı bir tabloda depolanmaktadır ve ilgili öğrenci bilgileri Öğrenci_Kayıtları adlı bir tabloda depolanmaktadır.

    Herhangi bir öğrencinin en düşük not ortalamasını tutturamadığı branşların (en düşük not ortalamaları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 : Aynı amaçla SOME anahtar sözcüğünü de kullanabilirsiniz; SOME anahtar sözcüğü ANY ile eş anlamlıdır.

  • EXISTS    Alt sorgunun en az bir satır döndürmesi gerektiğini belirtmek için WHERE yan tümcesinde EXISTS kullanın. Alt sorgunun hiçbir satır döndürmemesi için EXISTS'in önüne NOT da ekleyebilirsiniz.

    Örneğin, aşağıdaki sorgu en az bir siparişte geçen ürünlerin listesini döndürür:

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

    NOT EXISTS kullanıldığında, sorgu varolan siparişlerin en az birinde geçmeyen ü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 bir parçası olduğunu doğrulamak için WHERE yan tümcesinde IN kullanın.

    Örneğin, aşağıdaki sorgu satış temsilcisi olmayan çalışanlar tarafından işlenmiş olan siparişlerin (sipariş tarihleriyle birlikte) listesini 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ı soruyu aşağıdaki gibi yazabilirdiniz:

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

Sayfanın Başı

Not : Makine Çevirisi Yasal Uyarısı: Bu makale, insan müdahalesi olmadan bir bilgisayar sistemi tarafından çevrilmiştir. Microsoft bu makine çevirilerini İngilizce bilmeyen kullanıcıların Microsoft ürünleri, hizmetleri ve teknolojileriyle ilgili içeriklerden yararlanmasına yardımcı olmak için sunar. Bu makale makine çevirisi olduğundan sözcük, cümle dizilimi ve gramer hataları içerebilir.

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.

×