• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Sql Sorgusunda TOP kullanımı

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,202
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
Öncelikle Ülkemiz için geçmiş olsun, Bu deprem afetinden dolayı hayatını kaybeden vatandaşlarımıza Allah’tan rahmet, yaralananlara ve halen enkaz altında bulunanlara acil şifa ve sabır diliyorum.

SQL SELECT TOP Kullanımında ; aşağıdaki kodda ilk 15 veriyi getirmesi gerekirken 17 veriyi getirmekte;

bunun sebebi hikmeti ne olabilir? sorgunun başına TOP yazdığımızda her şekilde 15' te sınırlaması gerekmiyor mu?

örnek dosyayı ekliyorum, ilginiz için şimdiden teşekkürler,

Kod:
yol = ThisWorkbook.FullName

Set Con = CreateObject("ADODB.Connection")

Con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
   yol & ";extended properties=""Excel 12.0;hdr=yes"""
  
' ' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Set RS2 = CreateObject("ADODB.RecordSet")

Sql2 = "Select DISTINCT TOP 15 Brand, SUM(Frequency) As Toplam FROM [Data$A5:D" & LR & "]" & _
" Where Brand Not Like 'NO BRAND' GROUP BY Brand ORDER BY SUM(Frequency) DESC"
' ' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RS2.Open Sql2, Con, 1, 3

ab2 = RS2.RecordCount

'''veri = RS2.GetRows

Sht.Range("B8").CopyFromRecordset RS2
 

Ekli dosyalar

Aynı toplamda oldukları için geliyordur.
Sonuçları döngü ile yazdırıyorsanız , döngüye müdahale edin.
 
Aynı toplamda oldukları için geliyordur.
Sonuçları döngü ile yazdırıyorsanız , döngüye müdahale edin.
Erdem Hocam anlamayadım, dosya üzerinde gösterebilirseniz sevinirim

ikinci olarak herhangi bir döngü mevcut değil
Kod:
Sht.Range("B8").CopyFromRecordset RS2
 
İlk eklediğiniz dosya' da sonuçları döngü ile yazdırıyorsunuz.
İkinci eklediğiniz dosya'da zaten görünüyor. 13 sonucu sonda 3 kere var.
 
İlk eklediğiniz dosya' da sonuçları döngü ile yazdırıyorsunuz.
İkinci eklediğiniz dosya'da zaten görünüyor. 13 sonucu sonda 3 kere var.
Erdem Hocam teşekkürler,

şimdi anladım, 13 sonucu 3 defa olduğu için tamamını yazdırana kadar devam ediyor,

şöylemi anlamalıyız 13 sonucu 4 defa olsaydı 18 sonuç getirecekti.

peki böyle durumlarda her hâlükârda 15 ' te kes demek için nasıl bir yöntem izleyebiliriz?
 
Sonuçları döngü ile yazdırıyorsanız, döngüde exit sub yapabilirsiniz.
Tek seferde yazdırmak istiyorsanız aşağıdaki gibi olabilir.

Kod:
Sql2 = "select top 15 * from (Select DISTINCT TOP 15 Brand, SUM(Frequency) As Toplam FROM [Data$A5:D" & LR & "]" & _
" Where Brand Not Like 'NO BRAND' GROUP BY Brand ORDER BY SUM(Frequency) DESC)"
 
Sonuçları döngü ile yazdırıyorsanız, döngüde exit sub yapabilirsiniz.
Tek seferde yazdırmak istiyorsanız aşağıdaki gibi olabilir.

Kod:
Sql2 = "select top 15 * from (Select DISTINCT TOP 15 Brand, SUM(Frequency) As Toplam FROM [Data$A5:D" & LR & "]" & _
" Where Brand Not Like 'NO BRAND' GROUP BY Brand ORDER BY SUM(Frequency) DESC)"
Çok teşekkürler Erdem, Hocam iyiki varsınız
 
Geri
Üst