SQL sorgusunda 3 tabloyu birleştirme

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
2,972
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

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,376
Excel Vers. ve Dili
Office 2013
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:

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
2,972
Excel Vers. ve Dili
Office 2013 İngilizce
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,
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
2,972
Excel Vers. ve Dili
Office 2013 İngilizce
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] "
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,284
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Maalesef Excelde ikiden fazla sayfa join yapılamıyor.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,284
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
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.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,284
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
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...
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,323
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
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:

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,284
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
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...
 
Üst