T-SQL'de ilk 3 kaydı almak istediğimiz sorguyu oluşturmak istediğimizde aşağıdaki gibi bir sorgu yazarız.
Sorgumuzun sonucu
OrderID ProductID UnitPrice Quantity Discount
10764 39 18,00 130 0,1
11072 64 33,25 130 0
10398 55 19,20 120 0,1
TOP n yazdığımız sorgularda ilk n kaydı getirecektir. Fakat ilk 3 kaydı getirirken 4. 5. ya da sonraki kayıtlarda aynı değere sahip bir kayıt olabilir ve sorgumuz buna izin vermediği için bu verileri getiremeyecektir.
WITH TIES komutu ise bize aynı değerdeki kayıtları da getirecektir ve ilk sorgumuzdan dolayı dışarıda kalan kayıtlar da listelenmiş olacaktır.
WITH TIES yapısını kullanabilmek için ORDER BY kullanmamız zorunludur. Sıralamayı ORDER BY ile yapacağımız için önemlidir.
SELECT TOP 3 WITH TIES komutunun anlamı:Siparişteki ürün miktarı fazla olan ilk 3 kaydı getir ve aynı kayıt varsa onları da getir.
Sorgumuzun Sonucu
OrderID ProductID UnitPrice Quantity Discount
10764 39 18,00 130 0,1
11072 64 33,25 130 0
10776 51 53,00 120 0,05
10711 53 32,80 120 0
10894 75 7,75 120 0,05
10398 55 19,20 120 0,1
10451 55 19,20 120 0,1
10515 27 43,90 120 0
10595 61 28,50 120 0,25
10678 41 9,65 120 0
İlk sorgumuzda Quantity değeri 120 olan üründen sadece 1 tane gelmişti. İkinci sorgumuzda WITH TIES komutu 120 olan bütün kayıtları getirdi. Sonuç olarak geriye 3 kayıt yerine 10 kayıt döndürdü.
Örneklerimizde NORTHWND veritabanını kullandık.
select TOP 3 * FROM [Order Details] order by Quantity desc
Sorgumuzun sonucu
OrderID ProductID UnitPrice Quantity Discount
10764 39 18,00 130 0,1
11072 64 33,25 130 0
10398 55 19,20 120 0,1
TOP n yazdığımız sorgularda ilk n kaydı getirecektir. Fakat ilk 3 kaydı getirirken 4. 5. ya da sonraki kayıtlarda aynı değere sahip bir kayıt olabilir ve sorgumuz buna izin vermediği için bu verileri getiremeyecektir.
WITH TIES komutu ise bize aynı değerdeki kayıtları da getirecektir ve ilk sorgumuzdan dolayı dışarıda kalan kayıtlar da listelenmiş olacaktır.
WITH TIES yapısını kullanabilmek için ORDER BY kullanmamız zorunludur. Sıralamayı ORDER BY ile yapacağımız için önemlidir.
SELECT TOP 3 WITH TIES komutunun anlamı:Siparişteki ürün miktarı fazla olan ilk 3 kaydı getir ve aynı kayıt varsa onları da getir.
select TOP 3 WITH TIES * FROM [Order Details] order by Quantity desc
Sorgumuzun Sonucu
OrderID ProductID UnitPrice Quantity Discount
10764 39 18,00 130 0,1
11072 64 33,25 130 0
10776 51 53,00 120 0,05
10711 53 32,80 120 0
10894 75 7,75 120 0,05
10398 55 19,20 120 0,1
10451 55 19,20 120 0,1
10515 27 43,90 120 0
10595 61 28,50 120 0,25
10678 41 9,65 120 0
İlk sorgumuzda Quantity değeri 120 olan üründen sadece 1 tane gelmişti. İkinci sorgumuzda WITH TIES komutu 120 olan bütün kayıtları getirdi. Sonuç olarak geriye 3 kayıt yerine 10 kayıt döndürdü.
Örneklerimizde NORTHWND veritabanını kullandık.
Yorumlar
Yorum Gönder