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.

Not : Bu makale, Access uygulamaları – Access ile tasarlama ve çevrimiçi yayımlama veritabanı yeni türü için geçerli değildir. Daha fazla bilgi için Access uygulaması oluşturma konusuna bakın.

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

Alt sorgu alan diğer adı kullanabilirsiniz. Alt sorgu sonuçları ana sorgunuzu alan olarak kullanmak istediğiniz zaman alt sorgu alan diğer adı kullanın.

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

Alt sorgu alan diğer adını geçerli satırdaki diğer değerlere bağlı değerler görüntülemek için kullanabilirsiniz ve bunu bir alt sorgu kullanmadan yapmak mümkün değildir.

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

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

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

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

  3. Northwind'i tıklatın ve sonra 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, Sorgular 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 Kimliği alanını ve Sipariş Tarihi alanını çift tıklatın.

  5. Kılavuzun Ürün Kimliği 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.

  1. 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 sekmesinin Sonuçlar grubunda Çalıştır'a tıklayın.

    1. 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.

    2. 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

Alt sorguda bir alanın ölçüt olarak kullanabilirsiniz. Alt sorgu alt sorgu sonuçlarını görüntüleyen alan değerleri sınırlamak için kullanmak istediğiniz alanın ö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 veritabanını 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 sekmesinin 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.

×