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, sorgunun sonuçlarını başka bir sorguda alan olarak veya bir sorgu alanı ölçütü olarak kullanmak istiyor olabilirsiniz. Örneğin, her bir ürün için siparişler arasındaki aralığı görmek istediğiniz varsayalım. Bu aralığı gösteren bir sorgu oluşturmak için, her sipariş tarihini bu ürünün diğer sipariş tarihleriyle karşılaştırmalı. Bu sipariş tarihlerinin karşılaştırılması için bir sorgu da gerekir. Bir sorgu kullanarak bu sorguyu ana sorgunun içine alt sorgu.

SQL görünümü 'da bir ifade veya Yapılandırılmış Sorgu Dili (SQL) deyimine alt sorgu SQL görünümü.

Bu makalede

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

Alan diğer adı olarak bir altquery kullanabilirsiniz. Ana sorgunuz içinde bir alan olarak alt sorgu sonuçlarını kullanmak istediğiniz zaman, alt sorguyu alan diğer adı olarak kullanın.

Not: Alan diğer adı olarak kullanılan bir altquery birden çok alan geri getiramaz.

Altquery alanı diğer adını, geçerli satırdaki diğer değerlere bağımlı olan değerleri görüntülemek için kullanabilirsiniz; bu, altquery olmadan mümkün değildir.

Örneğin, her bir ürün için siparişler arasındaki aralığı görmek istediğiniz örnekte bize geri dönebilirsiniz. Bu aralığı belirlemek için, her sipariş tarihini o ürünün diğer sipariş tarihleriyle karşılaştırmalı. 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 veardı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ı'na 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 ve Sipariş Tarihi alanını çift tıklatın ve bunları sorgu tasarım kılavuzuna ekleyin.

  8. Kılavuzun Ürün Kimliği sütununu Sırala sütununda Artan'ı seçin.

  9. Kılavuzun Sipariş Tarihi sütununu sırala satırda 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, altquery'dir. Her satır için alt arama, satırla ilişkilendirilmiş sipariş tarihine göre daha yakın olan en son sipariş tarihini seçer. Alt sorgudaki değerleri ana sorgunun geçerli satırındaki değerlerle karşılaştıracak şekilde tablo diğer adı oluşturmak için AS anahtar sözcüğünü nasıl kullanabileceğinize dikkat eder.

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

    Interval: [Order Date]-[Prior Date]

    Bu ifade, bir altquery kullanarak tanımlandığı önceki tarihe göre değeri kullanarak bu ürünün her sipariş tarihiyle ö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 sonra Sipariş Tarihine göre (azalan düzende) sıralanmış.

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

  14. Northwind veritabanını kapatın.

Sayfanın Başı

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

Alan ölçütü olarak bir altquery kullanabilirsiniz. Alanın görüntülene değerleri sınırlandırmek için alt ölçütün sonuçlarını kullanmak istediğiniz zaman, alan ölçütü olarak bir altquery kullanın.

Örneğin, satış temsilcisi olan çalışanlar tarafından işlenen siparişlerin listesini gözden geçirmek istediğiniz varsayalım. Bu listeyi oluşturmak için, her siparişin çalışan kimliğini, satış temsilcisi olan ç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 yordam kullanırsiniz:

  1. Northwind.accdb'yi 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 çifttıklayın.

  5. Siparişler tablosunda Çalışan Kimliği alanını, Sipariş Kimliği alanını veSipariş Tarihi alanını çift tıklatın ve bunları sorgu tasarım kılavuzuna ekleyin. Çalışanlar tablosunda, İş Unvanı alanını tasarım kılavuzuna eklemek için çift tıklayın.

  6. Çalışan Kimliği sütununu ö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ırma kutusuna aşağıdaki ifadeyi yazın veya yapıştırın:

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

    Bu, altquery'dir. Çalışanın satış temsilcisi unvanının yoksa tüm çalışan kimliklerini seçer ve sonuçtan ana sorguya ayarlanmış malzemeleri sağlar. Ardından ana sorgu, Siparişler tablosundan ç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ışır ve sorgu sonuçları, satış temsilcisi olan çalışanlar tarafından işlenen siparişlerin listesini gösterir.

Sayfanın Başı

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

Alt sorguyla kullanabileceğiniz çeşitli SQL anahtar sözcükleri vardır:

Not: Bu liste çok kapsamlı değil. Veri tanımı anahtar sözcükleri hariç olmak üzere, alt sorguda geçerli herhangi bir 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 karşılayan satırları almak için WHERE yan tümcesinde ALL kullanın.

    Örneğin, bir üniversite öğrencilerini analiz ettiğimizi varsayalım. Öğrencilerin, ana notlardan ana sınıfa kadar olan en düşük genel not ortalamasını korumaları gerekir. Majors and their minimum GPAs are stored in a table named Majors, and the relevant student information is stored in a table called Student_Records.

    Bu ana not ortalamasını aşan tüm öğrencilerin en düşük genel not ortalamasını aşmış olduğu ana derecelerin listesini (ve bunların en düşük GENEL NOT ORTALAMALARıNı) 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 biri ile 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 üniversite öğrencilerini analiz ettiğimizi varsayalım. Öğrencilerin, ana notlardan en yüksek not ortalamasını aya kadar olan bir en düşük genel not ortalamasını sahip olması gerekir. Majors and their minimum GPAs are stored in a table named Majors, and the relevant student information is stored in a table called Student_Records.

    Bu ana not ortalamasını karşılamamış olan tüm öğrencilerin en düşük genel not ortalamalarını karşılayamaz durumda olduğu bir majors listesini (ve bunların en düşük GPA'larını) 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çla kullanabilirsiniz; SOME anahtar sözcüğü ANY ile eş anlamlıdır.

  • EXISTS     Where yan tümcesinde, bir alt sorgun en az bir satır geri dönecek şekilde EXISTS kullanın. Ayrıca, bir altquery'nin hiçbir satır geri dönmemek zorunda olmadığını belirtmek için EXISTS'ın önsözlerini NOT ile ifade edersiniz.

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

    NOT EXISTS kullanarak, sorgu en az bir mevcut sırada bulunamaz ü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    Where yan tümcesinde, ana sorgunun geçerli satırındaki değerin alt sorgunun döndüren kümenin bir parçası olduğunu doğrulamak için IN yan tümcesini kullanın. Ayrıca, ana sorgunun geçerli satırındaki değerin alt sorgunun döndürülen kümenin bir parçası olmadığını doğrulamak için IN ile NOT yazılarının önsözlerini de ortaya getirebilirsiniz.

    Örneğin, aşağıdaki sorgu satış temsilcisi değil çalışanlar tarafından işlenen siparişlerin listesini (sipariş tarihleriyle birlikte) 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!

×