• DİKKAT

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

SQL sorgusunda belli kritere göre kesişim hk.

  • 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,201
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
Ekli dosyada Data sayfasında "A" sütununda isimler var, "B" sütununda ise yetenek değerleri mevcut,

Yapmak istediğim Yetenek alanında 1 ve 2 olanlarda isimlerin ortak olanları (kesişimi) ve ortak olmayanları (kesişmeyenleri);

sorgusunu nasıl oluşturabiliriz?

Teşekkürler,
iyi hafta sonları..

Kod:
Sub KesisimListe()
Dim Con As Object
Dim RS As Object
Dim Sql1 As String

Sayfa2.Cells.ClearContents

 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 RS = CreateObject("ADODB.RecordSet")

Sql1 = "Select Distinct [İSİM] From [Data$]"
' ' - - - - - - - - - - - - - - - - - - - - - - - - - - - -

RS.Open Sql1, Con, 1, 1

ub = RS.RecordCount

If ub > 0 Then

   Sayfa2.Range("A2").CopyFromRecordset RS

End If

Sql1 = ""

RS.Close

Set RS = Nothing

Con.Close

Set Con = Nothing

End Sub
 

Ekli dosyalar

Ortak olanlar;

C#:
Sql1 = " Select T1.[İSİM] From " & _
       "(Select [İSİM] From [Data$] Where [YETENEK]= 1) As T1  " & _
       " Inner Join " & _
       "(Select [İSİM] From [Data$] Where [YETENEK]= 2) As T2 " & _
       " On T1.[İSİM] = T2.[İSİM] "


.
 
Son düzenleme:
Ortak olanlar;

C#:
 Sql1 = " Select T1.[İSİM] From (Select [İSİM] From [Data$] Where [YETENEK]= 1) As T1  " & _
        " Inner Join (Select [İSİM] From (Select [İSİM] From [Data$] Where [YETENEK]= 2)) As T2 " & _
        " On T1.[İSİM] = T2.[İSİM] "


.
Haluk Hocam çok teşekkürler,
Buradaki sorgu kesişenler, peki aynı şekilde kesişmeyenleri nasıl kurgulayabiliriz?
 
Kesişmeyenler;

C#:
Sql1 = " Select Distinct [İSİM] From [Data$] Where [İSİM] Not In " & _
       " (Select T1.[İSİM] From " & _
       " (Select [İSİM] From [Data$] Where [YETENEK]= 1) As T1  " & _
       " Inner Join " & _
       " (Select [İSİM] From [Data$] Where [YETENEK]= 2) As T2 " & _
       " On T1.[İSİM] = T2.[İSİM]) "


.
 
Son düzenleme:
Kesişmeyenler;

C#:
Sql1 = " Select Distinct [İSİM] From [Data$] Where [İSİM] Not In " & _
       " (Select T1.[İSİM] From (Select [İSİM] From [Data$] Where [YETENEK]= 1) As T1  " & _
       " Inner Join (Select [İSİM] From (Select [İSİM] From [Data$] Where [YETENEK]= 2)) As T2 " & _
       " On T1.[İSİM] = T2.[İSİM]) "


.
harikulade!
iyiki varsınız Haluk Hocam
çok teşekkürler.!.
 
Kesişmeyenler;

C#:
Sql1 = " Select Distinct [İSİM] From [Data$] Where [İSİM] Not In " & _
       " (Select T1.[İSİM] From " & _
       " (Select [İSİM] From [Data$] Where [YETENEK]= 1) As T1  " & _
       " Inner Join " & _
       " (Select [İSİM] From [Data$] Where [YETENEK]= 2) As T2 " & _
       " On T1.[İSİM] = T2.[İSİM]) "


.
Haluk Hocam yukarıda vermiş olduğunuz sorgu nedendir nilemiyorum veri sayısı artınca makineyi çok kasıyor, Aşağıdaki şekilde bir sorgu oluşturdum ama; buna ne dersiniz, gayet hızlı çalışıyor.

ilk defa bu kadar kompleks bir sorgu oluşturdum, bu konuda sizin de görüş ve önerinizi almak isterim.
Teşekkürler,

Kod:
    Sql2 = " Select T3.[İSİM] From (Select T1.[İSİM],T2.[YETENEK] From (Select [İSİM] From [Data2$] Where [YETENEK]= 1) As T1  " & _
       " Left Join (Select [İSİM],[YETENEK] From (Select [İSİM],[YETENEK] From [Data2$] Where [YETENEK]= 2)) As T2 " & _
       " On T1.[İSİM] = T2.[İSİM]) AS T3 WHERE T3.[YETENEK] is Null"
 
Doğru çalışıyorsa sorun yok demektir, tebrik ederim....

.
 
Geri
Üst