• DİKKAT

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

SQL sorgusunda 3 tabloyu birleştirme

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,201
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
Bir sorguda 3 tabloyu birleştirmem gerekiyordu, bir türlü beceremedim, Ekli dosyada;

1- Ürünler Sayfasında Stok Adı ve Stok Kodu
2- SiparisDetay sayfasında SiparisID ve Stok Kodu
3- Siparisler Sayfasında SiparisID
eşleştirerek,

Stok Adını içeren bir kelimeyi Userform' da TextBox' a girdiğim zaman, bunu içeren stok kodlarını, bu stok kodlarından Siparis numaralarına ulaşmak istiyorum.

Ekli dosyada "zeka" kelimesini yazdığımda Siparisler sayfasında Sarı ile boyalı satırları almam gerekecek
teşekkürler,
Kod:
    Set Conn = CreateObject("ADODB.CONNECTION")
    
    With Conn
        .Open "Provider=Microsoft.Ace.Oledb.12.0;Extended Properties='Excel 12.0;HDR=YES;IMEX=0';Data Source=" & _
               ThisWorkbook.FullName
       End With
       
     strSql = "Select * From [Siparisler$]"
        
     Set RS = Conn.Execute(strSql)
     
     Sheets("Rapor").Range("A2").CopyFromRecordset RS
iyi çalışmalar.
 

Ekli dosyalar

Merhaba;

Öncelikle sipariş detay sayfası gereksiz görünüyor.

Siparişler tablosuna ürünID(stokID) eklenmeli yani 2 tablo gerekiyor mevcut duruma göre.. Sonra eşleşen id lere göre her türlü sorgulama yapılabilir.

Asıl mesele ise siz tablolar veriler, id lerden bahsediyorsunuz ama bunu Excel de deniyorsunuz. En basit olarak Access le yapın bence tabloları ve veritabanı normalizasyonunu kavrayın. Sonrası zaten gelecektir. Excel iyidir hoştur süperdir ama veritabanı gibi ve veritabanı şartlarında kullanmaya çalışmak hiç doğru değildir.
 
Son düzenleme:
Merhaba;

Öncelikle sipariş detay sayfası gereksiz görünüyor.

Siparişler tablosuna ürünID(stokID) eklenmeli yani 2 tablo gerekiyor mevcut duruma göre.. Sonra eşleşen id lere göre her türlü sorgulama yapılabilir.

Asıl mesele ise siz tablolar veriler, id lerden bahsediyorsunuz ama bunu Excel de deniyorsunuz. En basit olarak Access le yapın bence tabloları ve veritabanı normalizasyonunu kavrayın. Sonrası zaten gelecektir. Excel iyidir hoştur süperdir ama veritabanı gibi ve veritabanı şartlarında kullanmaya çalışmak hiç doğru değildir.
Hocam sayfaların formatı bu şekilde, bu aşamada bunu değiştirecek durumda değiliz,
data sayısı bu kadar değil çok fazla, ben çok basit bir örneğini paylaştım,
Excel de kurguyu hazırladıktan sonra Access' e geçeriz,
teşekkürler,
 
Hocam sayfaların formatı bu şekilde, bu aşamada bunu değiştirecek durumda değiliz,
data sayısı bu kadar değil çok fazla, ben çok basit bir örneğini paylaştım,
Excel de kurguyu hazırladıktan sonra Access' e geçeriz,
teşekkürler,

Aşağıdaki şekilde bir çözüm ürettim ama;
umarım her yerde doğru çalışır.

her şey için teşekkürler,

Kod:
          strSql = "SELECT T3.* FROM (Select DISTINCT T1.SiparisID FROM [Urunler$] AS T2 " & _
     "LEFT JOIN [SiparisDetay$] AS T1 ON T2.[StokID]=T1.[StokId] " & _
     "where T2.[StokAdi] like '%" & Urun & "%') AS T4 " & _
    "LEFT JOIN [Siparisler$] AS T3 ON T4.[SiparisID]=T3.[ID] "
 
Maalesef Excelde ikiden fazla sayfa join yapılamıyor.
 
Bahsettiğim Excel uyarısını aldığım epeyi zaman oldu. Türlü türlü cinlikler denemiştim... :)

Eğer sorgunuz çalışıyorsa sorun yok; bu şekilde çalıştırmaya devam edin.
 
Bu arada aklımdaki çözüm önerimi belirtmeyi unuttum...

Eğer üç veya daha fazla tablo birleşecekse, Excel verilerinizin hızlıca text veya access dosyasına aktarılmasıyla join mümkündür.

Bilgi ve tecrübesine kefil olduğum @Haluk üstad, zamanı müsait olursa bu yöntem ile yardımcı olabilir...
 
Maalesef Excelde ikiden fazla sayfa join yapılamıyor.

Üstat, bu konularda senin söylediğin lafın üstüne söz söylenmez ama; 3 değişik dosya üzerindeki tabloların üzerinde JOIN kullanarak sorgu çalıştırılabiliyor...


Edit:
Bu arada, 8 No'lu mesajındaki övgülerinden dolayı mahcubiyetimi de belirtmek isterim...

.
 
Son düzenleme:
Aynı dosya olmasa bile IN clause ile mümkünmüş. İşin garip tarafı, kaynak başlık yaklaşık 5 yıllık... başlıkta benim mesajım olduğu halde konuyu hatırlayamadım. :)
... son beş yılda, hayatın beni on yıl yaşlandırdığı hususunda artık eminim...
 
Geri
Üst