Kodcu Murat Youtube Kanalına Abone Olmayı Unutma

Subquery Returned More Than 1 Value, SQL Server Hatası

‘Subquery Returned More Than 1 Value’ Sql Server Hatası, yazdığınız sql cümlelerinde yeri geldiğinde subquery ile veri alma ihtiyacı duyabiliyorsunuz 1 kayıt gelmesi gereken durumlarda 1’den fazla kayıt geldiğinde bu hatayı vermesi olası bir durumdur.

SQL Server ‘Subquery Returned More Than 1 Value’ Hatası Çözümü

Subquery Returned More Than 1 Value

Yazdığınız sql cümlelerinde yeri geldiğinde subquery ile veri alma ihtiyacı duyabiliyorsunuz 1 kayıt gelmesi gereken durumlarda 1’den fazla kayıt geldiğinde bu hatayı vermesi olası bir durumdur.

Hata Çıktısı

Bu hatanın çözümü için ise hatanın devamında da belirtildiği gibi koşullar ekleyerek tek kayıt gelmesini sağlayınız veya koşul varsa 1’e düşürebilmek için koşul sayısını arttırmalı, koşul için kullandığınız alan adını daha doğru seçmeli yada .

Alttaki örnek kod tablo üzerinden ve örnek sql kod blokları ile nasıl bu hataya ulaştığımızı göreceğiz ve hatayı çözmek için kullanacağımız yollarıda kullanacağız.

Alttaki sorgular Northwind örnek veritabanı kullanılarak oluşturulmuş sorgulardır. Bu olayı anlamada yardımcı olması adına oluşturulmuş sql cümleleridir.

Örnek 1

Sonuç

OrderIDCustomerIDContactPersonIDBackorderOrderIDOrderDateExpectedDeliveryDateCustomerPurchaseOrderNumberLastEditedBy
18323032451/1/20131/2/2013121267

Üstteki kodda belki bu hatayı hiç almayacaksınız nedeni de suquery sql sorgumuzda where’de koşul olarak primary key bir alan kullandık o yüzden hiçbir şekilde birden fazla kayıt gelme durumu olmayacaktır ama primary key yerine alttaki gibi bir nvarchar kolonu olan bir kolon kullansaydık o zaman bu hata ile karşılaşmamız olası bir durumdur.

Örnek 2

Buradaki sorgu neden böyle yazıldı where de direkt adam yazsaydın neden subquery ile uğraşıyorsun gibi düşünmeyelim ben sadece subquery hatasını en kısa yoldan nasıl alırım derken bu sorgu çıktı ortaya ama sonuç itibariyle hatayı aldım subquery sonucunda tüm alanları alacak şekilde SELECT * FROM Application.People p2 WHERE p2.PreferredName = ‘Adam’ revize edince alttaki veri kümesi döndü.

PersonIDFullNamePreferredNameSearchNameIsExternalLogonProviderPhoneNumberFaxNumberEmailAddress
1033Adam KubatAdamAdam Adam Kubat1/0/1900(216) 555-0100(216) 555-0101adam@tailspintoys.com
1221Adam DvorakAdamAdam Adam Dvorak0(239) 555-0100(239) 555-0101adam@tailspintoys.com
2094Adam BalazAdamAdam Adam Balaz0(319) 555-0100(319) 555-0101adam@wingtiptoys.com

Gördüğünüz gibi 3 farklı satır döndü bundan dolayı hatayı aldık bu sorunu aşmak için şu şekilde yöntemler kullanabilirsiniz subqyery sorgusuna TOP 1 ekleyerek sadece tek bir kaydın gelmesini sağlayabilirsiniz fakat aslında odaklanmanız gereken konu farklı gelen datalar varsa bir düşünmek lazım gerçekten erişmeye çalıştığım data TOP 1 dediğimde doğru data olacak mı? Eğer subquery sonucunda dönen tüm satırlardaki dataların aynı olacağını düşünüyorsanız(PreferredName olarak seçtiğim kolonda olduğu gibi) o zaman rahatlıkla TOP 1 diyerek bu sorunu aşabilirsiniz yada sayısal olarak en büyük yada en küçük değerlerle ilgileniyorsanız o zaman TOP 1 yerine MAX ve MIN gibi aggregate fonksiyonlarını kullanabilirsiniz.


📚 İlgilenebileceğiniz Diğer Bazı Kaynaklar


✍ Lütfen “Subquery Returned More Than 1” Sql Server hatasına ait çözüm makalesi için alakalı olumlu-olumsuz tüm görüşlerinizi bana yorum yada mail yolu ile iletmeyi ihmal etmeyin.

🔗 Sosyal medya kanallarından {subject} adlı makaleyi paylaşarak destek olursanız çok sevinirim.

👋 Bir sonraki makalede görüşmek dileğiyle.

4.6/5 - (9 votes)