İlişki Join oluşturmak

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Merhabalar.
İki tablom var.
1 tanesinin adı personel
Bunda Adi adlı alanda personelin isimleri var.
Diğer tablomun ismide Tablo1
Bunda AD alanında Personel isimleri var.Yas alanındada yasları var.
Ben sql sorgusunda Personel tablosunu esas tablo yapıcam,ama tablo1 isimli tablodanda AD ile ilişki kurup Yas Alanından yası almak istiyorum.SQL sorgusunda Join i nasıl yapmalıyım.Bir sql sorgusu yapabilirmisiniz?
Teşekkür ederim.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Sayın Altay3535 teşekür ederim.İnceleyiceğim.:cool:
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Merhabalar;

Evren Bey, "AD" alanını neden 2 ayrı tabloda da tutuyorsunuz? Tek tabloda olup diğer tabloda da(tablo1) ad alanını sayı yapıp personel tablosundaki ad alanıyla ilişkilendirmeniz en sağlıklı yol.

Ayrıca bu sorguyu nerde kullanacaksınız? Sql server, Access ...? Sql server ya da Access olsa bile 2 aynı tür formatlı alanı mouse ile de ilşkilendirebilirsiniz. Sorgu tasarımı ya da view açın tabloları seçin ve ilgili alanı diğerinin üstüne sürükleyiniz.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Merhabalar.
Bu işlemi excelde VBA da sql sorgusunda kullanıcam,onun için sql sorgusunda join olsun istiyorum.
İlginiz için teşekür ederim.
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Şöyle bişey olabilir;

Kod:
SELECT personel.Ad, Tablo1.yas
FROM personel INNER JOIN Tablo1 ON personel.Ad = Tablo1.ad;
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Merhaba ilişki içeren sorguyu kurdum.Oldu ama şimdi başka bir sorun çıktı.
1-Personel listesine Tablo1 deki kişilerden bir tane daha yeni kayıt giremyorum.Accsess uyarıyor.Yeni veri girişime izin vermiyor.Bu ilişki kurduktan sonra oldu.Oysa ben Personel tablosunda 1 den fazla Tablo1 Deki kişilerden kayıt yapabilmeliyim.
Not : kayıtı accsessi açarak manuel olarak veri giriyorum.
2-kişilerin yaşları yani ilşikden tablo1 den aldığı yaşları listbox'ın solunda gösteriyor.Oysa bunu en sağda göstermesini istiyorum.Listboxta Personel tablosunun tamamını ve yanlarınada kişilerin ilişki den sonra tablo1 den aldığı yaşalrı göstermesini istiyorum.
Teşekür ederim.
Dosyayı ekledim bakarsanız memnun olurum.
 

Ekli dosyalar

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Merhaba;

Tablo tasarımlarınız maalesef ki kötü.. Örnek olarak "ad" alanını birincil anahtar yapmışsınız.
Ben tabloları düzenledim, lütfen tablo tasarımını ve ilişkilerini inceleyiniz. Bir sorgu da koydum ve cümlesi de alttaki gibidir, diğer alanları eklersiniz.(aynıdır). Siz excel ile bağlantısını tekrar düzenleyiniz.

Kod:
SELECT Personel.Adi, Personel.Soyadi, Tablo1.Yas
FROM Personel INNER JOIN Tablo1 ON Personel.ID = Tablo1.AD;
 

Ekli dosyalar

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Evet üstadım haklısınız.1ncil anahatrı yanlış yapmışım.
Tablo 1 deki bilgiler personel bilgileri olacak hocam,Kilosu boyu vs olacak bunlarıda eklediğimiz düşünelim.Esasen AD alanına yazdığınız diğer formdaki ID nolar tam tersi olmalı diye düşünüyorumBuradaki ıdları orada bir alan açıp orada kayıt yaparken listelemliyim gibime kgeliyor.
Mesela forma bir tane comboboz koyacam Ve bu tablo1 deki bilgileri yani simleri ve ıdları listeliyecem comboboxta .
Personel tablosuna kayıt girerken bu comboboxtz-an seçtiğim kişiyi adi alanına kaydedicem ve ID ınıda oraya açtığım bir alan giricem.Tablolar bu şekilde tasarlayabilirmisiniz?Ve Joinide bu şekilde ayarlayabilirmisiniz?
Teşekür ederim.
Ben prof bir program yapmayacam yalnızca join konusuna çalışıyorum,öğrenmek için.Join nasıl çalışıyor diye öğreniyorum.Diğer mdb den kayıt alma işleme konularını biliyorum.Bu yönüm zayıf bunuda öğrendimmi işlem tamamdır diye düşünüyorum
Teşekür ederim.
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Öncelikle personel tablonuzda şu alanlar olmalı;

id, ad,soyad,yaş,kilo,boy..

görevler ve bölümler diye 2 ayrı tablo daha ve izinlerin ya da kişiye göre değişen verilerin tutulduğu bir tablo daha olmalı..

Sizin bahsettiğiniz isimlerin diğer tabloda olması olayı yanlış, yani doğrusu verdiğim gibidir.

Ayrıca sorgunuzu direkt access üzerinde yaparsanız veri almak için sql cümleleri yazmaktan da kurtulursunuz. örneğin sizin excel içinde olan kodunuzu alttaki gibi değiştirebilrisiniz.

Kod:
rs.Open "Sorgu1", conn, 1, 3
Bakın uzun sql cümlelerini yazmak derdi yok. elbette sorgu1 i de acess te oluşturmanız gerekiyor. benim yukarıda verdiğim örnekteki gibi..
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Öncelikle personel tablonuzda şu alanlar olmalı;

id, ad,soyad,yaş,kilo,boy..

görevler ve bölümler diye 2 ayrı tablo daha ve izinlerin ya da kişiye göre değişen verilerin tutulduğu bir tablo daha olmalı..

Sizin bahsettiğiniz isimlerin diğer tabloda olması olayı yanlış, yani doğrusu verdiğim gibidir.

Ayrıca sorgunuzu direkt access üzerinde yaparsanız veri almak için sql cümleleri yazmaktan da kurtulursunuz. örneğin sizin excel içinde olan kodunuzu alttaki gibi değiştirebilrisiniz.

Kod:
rs.Open "Sorgu1", conn, 1, 3
Bakın uzun sql cümlelerini yazmak derdi yok. elbette sorgu1 i de acess te oluşturmanız gerekiyor. benim yukarıda verdiğim örnekteki gibi..
Üstadım ben bunalara verileri excelden vba ile giricem.Tablo1 deki ad alanına yazdığınız numaraları nasıl oluşturacam peki.Max kullanrak yapsam ,bu sefer başka sorun oluşacak.Oda şu diyelim ki max ile orad bir sayı yazdık onuda biraz sonra o kişiyi Personel tablosunda yeni kayıtta girdik.Sonra diyelim ki tablo 1 den o en son eklediğimiz kişiyi sildik.Kayıtı.
Yeni bir tane max ile sayı oluşturduk.İşte o zaman karışıklık olacak çünkü onunla ilgili kayır yapmıştık personel tablosuna.Bu sefer o numara başka kişiye ait olacak.Yani böylede bir sorun oluyor o zaman.Accsess tablosunda oluşturduğum bir sorguyu bu şekilde excelde kullanabilecğimi bilmiyordum.Teşekkür ederim.Ama ben sorguyu excelde yapmak istiyorum.Çünki mdb dosyasınıda kodlarla oluşturabilirim.Tabii tabloları ve alanlarıda.
Teşekkür ederim.
Birde üstadım şu sorun var sizin dediğiniz gibi yaparsak ayni kişiden birden fazla kayıt girersek ID otomatik sayı olacağı için bunu tablo1 de bulamayacak.O zaman yaşlar falan listelenmeyecek.Bu personel tablosuna siz bakmayın personel diye ismi olduğuna .O sizin kafanızı karıştırmasın.Ben onu sitede birisi bir soru sormuştu elimde hazır vardı öyle kullandım.Birincil anahatrıda o soru soran kişi yanlış girmiş zaten.Bu personel tablosunun esa ismi günlük girilen kayıtlar olabilirdi.Dedim ya join konusunu anlamak için öyleağım şağım bir tasarım yapmadım.En basitinden nasıl öğrenirim diye düşündüm.Şimdi bu benim dediğm sorun oluşacak.Personel tablosunun esas ismi personel değide diyelim ki günlük girdiler olsun.Her gün bu tabloya mütamadiyen yeni kayıtlar giriliyor.Esas personel tablosu benim sonradan oluşturduum tablo1 olacak.Tabbi bended ehata var .Doru bir işellm yapmadık hailiyle sizinde kafanızı karıştırdık.Ben bu kadar deaylı bir şey olacağını düşünmemiştim.Ve bu karışıklğın olacağını öngöremedim.Kusura bakmayın.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Ben en iyisi tabloları amaca uygun duruma getireyim ,sorumu öyle sorayım.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Merhaba.
Arkadaşlar.Tabloları amaca uygun şekilde düzenledim.Joinde yaptım.Şimdi listeleyebiliyurum.Sizde bir baksanız herhangi bir terslik varmı.
Yalnız ilk sütunda bu şekilde veri adığımda tarihleri mm.dd.yyyy formatında gösteriyor.Onuda düzeltebilirmiyiz?
Teşekkür ederim.
Dosya ektedir.
 

Ekli dosyalar

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
SQL cümlesini aşağıdaki gibi yaptım.
Kod:
rs.Open "SELECT Maas.Tarih, Personel.Adi,Personel.Soyadi, Maas.Maas,Personel.Gorevi" & _
" FROM Maas INNER JOIN Personel ON Maas.AD=personel.ID;", conn, 1, 3
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Merhaba;

Tarih için kodu alttaki gibi revize edebilirsiniz;

Kod:
rs.Open "SELECT format(Maas.Tarih,'dd/mm/yyyy'), .................
Evren Bey, aslında join olayı için exceli kodları hiç devreye sokmadan basit 2-3 tabloluk örneklerle çalışsak daha faydalı olabilir başlangıç olarak...
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Merhaba;

Tarih için kodu alttaki gibi revize edebilirsiniz;

Kod:
rs.Open "SELECT format(Maas.Tarih,'dd/mm/yyyy'), .................
Evren Bey, aslında join olayı için exceli kodları hiç devreye sokmadan basit 2-3 tabloluk örneklerle çalışsak daha faydalı olabilir başlangıç olarak...
Üstadım teşekkür ederim.
Fazla büyütülecek bir durum yokmuş.Ondada fazla bir şey yokmuş.Bunların zaten bir çoğunu biliyorum.Bu join konusunu pek kavrayamamıştım.Şimdi onuda öğrendim.Artık bu yolda emin adımlarla ilerlerim.Ben istediğimi aldım.
İyi geceler.:)
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Öncelikle personel tablonuzda şu alanlar olmalı;

id, ad,soyad,yaş,kilo,boy..

görevler ve bölümler diye 2 ayrı tablo daha ve izinlerin ya da kişiye göre değişen verilerin tutulduğu bir tablo daha olmalı..

Sizin bahsettiğiniz isimlerin diğer tabloda olması olayı yanlış, yani doğrusu verdiğim gibidir.

Ayrıca sorgunuzu direkt access üzerinde yaparsanız veri almak için sql cümleleri yazmaktan da kurtulursunuz. örneğin sizin excel içinde olan kodunuzu alttaki gibi değiştirebilrisiniz.

Kod:
rs.Open "Sorgu1", conn, 1, 3
Bakın uzun sql cümlelerini yazmak derdi yok. elbette sorgu1 i de acess te oluşturmanız gerekiyor. benim yukarıda verdiğim örnekteki gibi..
Sizin accesste hazurladığınız sorguya tarihide ekledim.Ama sizin dediğiniz şekilde listboxa aldığımda tarihi mm.dd.yyyy formatında alıyor.
Bu sorguyu kod ile aldığımızda alanı sql cümlesinde formatlayıp alarak bu sorunu düzeltmiştik.
Bu şekli ile sorguyu alırsak bu sorunu düzeltebilirmiyiz.Düzeltirsek nasıl düzeltiriz.Düzeltemezsek bu durumda bu şekli ile bu sorguyu kullanamyız.
Teşekkür ederim.
Dosyanın son halinide ekledim.
 

Ekli dosyalar

Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Evren Bey,

Şu şekilde formatlayabi,lirsiniz:

Kod:
SELECT Format([Tarih],"mm\/dd\/yyyy") AS Deyim1, Personel.Adi, Personel.Soyadi, Maas.Maas, Personel.Gorevi
FROM Personel INNER JOIN Maas ON Personel.ID = Maas.AD;

İyi çalışmalar
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Evren Bey,

Şu şekilde formatlayabi,lirsiniz:

Kod:
SELECT Format([Tarih],"mm\/dd\/yyyy") AS Deyim1, Personel.Adi, Personel.Soyadi, Maas.Maas, Personel.Gorevi
FROM Personel INNER JOIN Maas ON Personel.ID = Maas.AD;

İyi çalışmalar
Üstadım teşekkür ederim.
Ben zaten kod ile formatlamıştım.
Sayın beab acsess dosyasında manuel olarak sorgu oluşturmuş.
Ben o sorguyu kullandım.Accsess dosyasındaki sorgunun adı sorgu1
bende sql cümlesinde onu kullandım.
Select "sorgu1" form ..... şeklinde.Listeleme yaptım.Ancak Tarih alanı mm.dd.yyyy şeklinde gözüküyor listboxta.Diğer yöntemde sorun yok onda gözüküyor dd.mm.yyyy şeklinde.Ama bu şekilde accsesteki sorgudan alırsam gözükmüyor.Onu o şekilde alarak sorguyu kullanrak tarih formatını dd.mm.yyyy şeklinde gösterbilirmiyiz diye sormuştum.
 
Üst