• DİKKAT

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

Sql sorgu kısaltma...

  • Konbuyu başlatan Konbuyu başlatan tamer42
  • Başlangıç tarihi Başlangıç tarihi

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,202
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
Aşağıdaki sorguda;

Name alanında 3 değeri (Elit, Dol, Bata) içeren satırları sorgulama dışında bırakmak istiyorum.

name Not like '%Elit%' and name Not like '%Dol%' and name Not like '%bata%'

bu ifadeyi daha kısa ve daha düzgün nasıl yazabiliriz?

Kod:
Sorgu = "Select DISTINCT category FROM " & Table & _
"where stok>0 and price>100 and name Not like '%Elit%' and name Not like '%Dol%' and name Not like '%bata%'"

teşekkürler,
iyi çalışmalar.
 
"Name" alanındaki sözkonusu veriler "Dol", "Elit", "Bata" gibiyse daha kısası olabilir ama örneğin "Dolcavita", "Elitnet", "Batarya" gibiyse daha kısası olmaz...

.
 
"Name" alanındaki sözkonusu veriler "Dol", "Elit", "Bata" gibiyse daha kısası olabilir ama örneğin "Dolcavita", "Elitnet", "Batarya" gibiyse daha kısası olmaz...

.
Hocam buradaki "Dol", "Elit", "Bata" terimler önemli değil;

Name IN ( '%Dol%', '%Elit%', '%Bata%')
gibi kodu kısaltmak ve daha kullanılabilir kılmak istiyorum, şimdi başka ifadeler de gelecek, derdim bunların hiçbirini içermeyen gibi daha basit nasıl yazılabilir?
 
"IN" kullanımınız yanlış; yalnız eşitlikleri kontrol edebilir.

.
 
"IN" kullanımınız yanlış; yalnız eşitlikleri kontrol edebilir.

.
Zeki Hocam burada "IN" kullanımını sadece örnek olsun diye verdim, Bunun gibi bir yöntem var mıdır? diye araştırıyorum.
bunları içermesin diye düşündüğüm ifadeler, şu anda 5 terim oldu;

AND ... and... sürekli çok uzun oluyor.
 
Maalesef... "içerir" ifadesi için tek tek yazmanız veya VBA ile ifadeyi dinamik oluşturmanız gerekiyor.

.
 
Maalesef... "içerir" ifadesi için tek tek yazmanız veya VBA ile ifadeyi dinamik oluşturmanız gerekiyor.

.
Zeki Hocam "VBA ile ifadeyi dinamik oluşturmak" derken, sql sorgusunda nasıl bir yöntemdir?
bir örnek verebilir misiniz?
teşekkürler...
 
Merhaba,
Aşağıdaki sorguda;

Name alanında 3 değeri (Elit, Dol, Bata) içeren satırları sorgulama dışında bırakmak istiyorum.

name Not like '%Elit%' and name Not like '%Dol%' and name Not like '%bata%'

bu ifadeyi daha kısa ve daha düzgün nasıl yazabiliriz?

Kod:
Sorgu = "Select DISTINCT category FROM " & Table & _
"where stok>0 and price>100 and name Not like '%Elit%' and name Not like '%Dol%' and name Not like '%bata%'"

teşekkürler,
iyi çalışmalar.

Bu şekilde deneyin en azından NOT ları tekrarlamamış olursunuz.
SQL konusunda deneyimli değilim :)

and Not (name like '%Elit%' or name like '%Dol%' or name like '%bata%')
 
Eğer "Name" isimli veri alanındaki verileriniz resimde belirtildiği gibiyse, aşağıdaki sorgu işinize yarar...


C#:
    Sorgu = "Select Distinct [Category] From [Sheet1$] Where [Stok]>0 And [Price]>100 " & _
            " And Left([Name],4) Not In ('Elit', 'Dolc', 'Bata')"


Bu sorguda diğer kriterle birlikte "Name" alanındaki verilerin soldan ilk 4 karakteri kontrol edilmekte olup, geri dönen veri seti M1 ve M2 dir... (2 ve 3. satırlardaki veriler)






Zeki Gürsoy'un bahsettiği dinamik tanımlama işini de, aşağıdaki kodda "arrExceptions" dizisinin elemanlarına ilave yaparak SQL sorgusunda şu şekilde kullanabilirsiniz;

C#:
    arrExceptions = Array("Elit", "Dolca", "Bata")
   
    For i = LBound(arrExceptions) To UBound(arrExceptions)
        arrExceptions(i) = "[Name] Not Like '%" & arrExceptions(i) & "%'"
    Next
   
    strExceptions = Join(arrExceptions, " And ")
   
    Sorgu = "Select Distinct [Category] From " & Table & " Where [Stok]>0 And [Price]>100 And " & strExceptions

.
 
Son düzenleme:
Eğer "Name" isimli veri alanındaki verileriniz resimde belirtildiği gibiyse, aşağıdaki sorgu işinize yarar...


C#:
    Sorgu = "Select Distinct [Category] From [Sheet1$] Where [Stok]>0 And [Price]>100 " & _
            " And Left([Name],4) Not In ('Elit', 'Dolc', 'Bata')"


Bu sorguda diğer kriterle birlikte "Name" alanındaki verilerin soldan ilk 4 karakteri kontrol edilmekte olup, geri dönen veri seti M1 ve M2 dir... (2 ve 3. satırlardaki veriler)






Zeki Gürsoy'un bahsettiği dinamik tanımlama işini de, aşağıdaki kodda "arrExceptions" dizisinin elemanlarına ilave yaparak SQL sorgusunda şu şekilde kullanabilirsiniz;

C#:
    arrExceptions = Array("Elit", "Dolca", "Bata")
 
    For i = LBound(arrExceptions) To UBound(arrExceptions)
        arrExceptions(i) = "[Name] Not Like '%" & arrExceptions(i) & "%'"
    Next
 
    strExceptions = Join(arrExceptions, " And ")
 
    Sorgu = "Select Distinct [Category] From " & Table & " Where [Stok]>0 And [Price]>100 And " & strExceptions

.
Zeki Hocam;
Haluk Hocam;
Çok teşekkürler, bu şekilde bir çözüm arıyordum.
arrExceptions = Array("Elit", "Dolca", "Bata") sanırım buradaki listeyi bir excel sayfasından da alabilirim.

iyi günler, iyi çalışmalar.
 
Sözkonusu liste "Sheet1" sayfasında "H" sütunundaysa;

Örneğin; H2 ="Elitnet", H3 ="Dolcavita", H4="Batarya", ...........


C#:
    Dim arrExceptions()
    Dim myArr()
    
    Table = "[Sheet1$]"
    Set mySh = Sheets("Sheet1")
    
    arrExceptions = mySh.Range("H2:H" & mySh.Range("H" & Rows.Count).End(xlUp).Row).Value
    
    For i = LBound(arrExceptions, 1) To UBound(arrExceptions, 1)
        ReDim Preserve myArr(1 To i)
        myArr(i) = "[Name] Not Like '%" & arrExceptions(i, 1) & "%'"
    Next
    
    strExceptions = Join(myArr, " And ")
    
    Sorgu = "Select Distinct [Category] From " & Table & " Where [Stok]>0 And [Price]>100 And " & strExceptions


.
 
Sözkonusu liste "Sheet1" sayfasında "H" sütunundaysa;

Örneğin; H2 ="Elitnet", H3 ="Dolcavita", H4="Batarya", ...........


C#:
    Dim arrExceptions()
    Dim myArr()
   
    Table = "[Sheet1$]"
    Set mySh = Sheets("Sheet1")
   
    arrExceptions = mySh.Range("H2:H" & mySh.Range("H" & Rows.Count).End(xlUp).Row).Value
   
    For i = LBound(arrExceptions, 1) To UBound(arrExceptions, 1)
        ReDim Preserve myArr(1 To i)
        myArr(i) = "[Name] Not Like '%" & arrExceptions(i, 1) & "%'"
    Next
   
    strExceptions = Join(myArr, " And ")
   
    Sorgu = "Select Distinct [Category] From " & Table & " Where [Stok]>0 And [Price]>100 And " & strExceptions


.
Teşekkürler Haluk Hocam
iyiki varsınız....
 
Geri
Üst