Üç tabloyu birleştirerek bir liste oluşturma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Üç tabloyu birleştirerek bir liste oluşturma
Tur
TurKodu
TurAdi
Bolum
BolumKodu
TurKodu
BolumAdı
alan
alankodu
turkodu
bolumkodu
alan adi
bu üç tablodada kayıtlarım mevcut. bu üç tabloyu tek data gridde nasıl görüntülerim. Ufak bir örnek vereyim
tur için
1 lise
2 meslek
bolum için
11 1 düz lise
12 1 süper lise
alan için
111 11 1 sayısal
121 12 1 sözel
bu üç tablonun görüntüsünün şöyle olmasını istiyorum
1 lise
11 düz lise
111 sayısal
12 süper lise
121 sözel
2 meslek
umarım ne yapmak istediğimi anlatabilmişimdir. sql cümlesini nasıl kurabilirim
TurKodu
TurAdi
Bolum
BolumKodu
TurKodu
BolumAdı
alan
alankodu
turkodu
bolumkodu
alan adi
bu üç tablodada kayıtlarım mevcut. bu üç tabloyu tek data gridde nasıl görüntülerim. Ufak bir örnek vereyim
tur için
1 lise
2 meslek
bolum için
11 1 düz lise
12 1 süper lise
alan için
111 11 1 sayısal
121 12 1 sözel
bu üç tablonun görüntüsünün şöyle olmasını istiyorum
1 lise
11 düz lise
111 sayısal
12 süper lise
121 sözel
2 meslek
umarım ne yapmak istediğimi anlatabilmişimdir. sql cümlesini nasıl kurabilirim
- doctorfunks
- Üye
- Mesajlar: 105
- Kayıt: 26 Oca 2005 10:37
- Konum: İstanbul
Sayın @ekin;
Siz 3 farklı tablodaki satırları yani recordları birleştirmeye çalışıyorsunuz. Bildiğim kadarıyla bu mümkün değil. Sql join operasyonu kolonları yani farklı tablolardaki fieldları birleştirir.(Birde UNION var ama onda ayı field yapısındaki tabloların recordları bir araya getirilir. Bu örnekte işe yaramaz. Tabii tablolarda alan isim ve sayılarını eşitlerseniz bunu kullanabilirsiniz)
Sizin analiziniz sorunlu. Hiyerarjik bir veri yapınız var. Hiyerarşik veri yapıları genelde bir tek tabloda tutulur. Bunu ya bir alanla birbirine bağlarsınız (yeni yöntem), fieldlarınız şuna benzer;
KodNo,Adi,IliskiNo
Yada sizin yaptığınız gibi kod numarası düzenleme ile yaarsınız (eski yöntem), fieldlarınız şuna benzer;
KodNo,Adi
Bu yöntemde veriyi sizin istediğiniz sonuçtaki gibi girersiniz. Yani tek tabloda veri şu şekilde girilir;
100 lise
110 düz lise
111 sayısal
120 süper lise
121 sözel
200 meslek
İki yöntemdende kısaca seminerin bir tanesinde bahsedilmiş.
Örneğin piyasada AmonRA adındaki Otel otomasyonunun yemek ile ilgili tablosu buna benzer bir şekilde tasarlanmıştır.
Sanırım tasarımınızda değişiklik yapmanız gerekiyor.
Siz 3 farklı tablodaki satırları yani recordları birleştirmeye çalışıyorsunuz. Bildiğim kadarıyla bu mümkün değil. Sql join operasyonu kolonları yani farklı tablolardaki fieldları birleştirir.(Birde UNION var ama onda ayı field yapısındaki tabloların recordları bir araya getirilir. Bu örnekte işe yaramaz. Tabii tablolarda alan isim ve sayılarını eşitlerseniz bunu kullanabilirsiniz)
Sizin analiziniz sorunlu. Hiyerarjik bir veri yapınız var. Hiyerarşik veri yapıları genelde bir tek tabloda tutulur. Bunu ya bir alanla birbirine bağlarsınız (yeni yöntem), fieldlarınız şuna benzer;
KodNo,Adi,IliskiNo
Yada sizin yaptığınız gibi kod numarası düzenleme ile yaarsınız (eski yöntem), fieldlarınız şuna benzer;
KodNo,Adi
Bu yöntemde veriyi sizin istediğiniz sonuçtaki gibi girersiniz. Yani tek tabloda veri şu şekilde girilir;
100 lise
110 düz lise
111 sayısal
120 süper lise
121 sözel
200 meslek
İki yöntemdende kısaca seminerin bir tanesinde bahsedilmiş.
Örneğin piyasada AmonRA adındaki Otel otomasyonunun yemek ile ilgili tablosu buna benzer bir şekilde tasarlanmıştır.
Sanırım tasarımınızda değişiklik yapmanız gerekiyor.
veri tabanı access
tablolar
tur
turkodu
turadi
bolum
bolumkodu
turkodu
bolumadi
alan
alankodu
turkodu
bolumkodu
alanadi
dbgridde iki sütun olacak
birinci sütunda
tur tablosunun turkodu
bolum tablosunun bolumkodu
alan tablosunun alankodu
ikinci sütunda ise
tur tablosunun turadi
bolumtablosunun bolumadi
alan tablosunun alanadi
tablolar
tur
turkodu
turadi
bolum
bolumkodu
turkodu
bolumadi
alan
alankodu
turkodu
bolumkodu
alanadi
dbgridde iki sütun olacak
birinci sütunda
tur tablosunun turkodu
bolum tablosunun bolumkodu
alan tablosunun alankodu
ikinci sütunda ise
tur tablosunun turadi
bolumtablosunun bolumadi
alan tablosunun alanadi
bence sunu yapmaya çalış....ekin yazdı:veri tabanı access
dbgridde iki sütun olacak
birinci sütunda
tur tablosunun turkodu
bolum tablosunun bolumkodu
alan tablosunun alankodu
ikinci sütunda ise
tur tablosunun turadi
bolumtablosunun bolumadi
alan tablosunun alanadi
iki ayrı sutundaki verileri nasıl birleştiririm...
önceki sorun bu
bunu yapalım önce
şimdi
bunu ele alalım
tur
turkodu
turadi
burada sen iki alandan oluşan bir alanıın textlerini nasıl birleştirirsin...
bunu söle deneyelim...
Kod: Tümünü seç
SELECT tur.turkodu, tur.turadi, CStr([tur]![turkodu])+' '+[tur]![turadi] AS Birleşmişhali
FROM tur;
sonuc su şekilde oldu
turkodu turadi Birleşmişhali
1 ali 1 ali
2 mehmet 2 mehmet
3 cecengiz 3 cecengiz
burdan sunu anladım demekki veri tabanındaki alanları sanal bir field sorgulayabiliriz...
birleşmişhali sanal bir field oldu...ve tur kodu ile turadi alanalrı birleştirildi...
bunun gibi şimdi sorgumuzu yazarız ve sizin istediğiniz alanalrı birleştiririz....
siz bu örnek babından deneyin almazsa veri tabanını
tahsin_balci@hotmail.com adresine atarsanız ben sizin için bakarım....kolay gelsin
Siz hayal edin...Biz yapalım TuannaSoft...
arkadaşın bana gönderdiği veri tabanında ben sql kodunu yazdım....
Kodun en son hali
Sonuc Şu sekilde oldu
1 - 11 - 111 LİSE- DÜZ LİSE-fdgd
1 - 11 - 112 LİSE- DÜZ LİSE-dfdfg
Kodun en son hali
Kod: Tümünü seç
SELECT CStr([tur]![TurKodu])+' - '+CStr([bolum]![BolumKodu])+' - '+CStr([alan]![AlanKodu]) AS Kodlarinbirlesmishali, [tur]![Aciklama]+'- '+[bolum]![BolumAdi]+'-'+[alan]![AlanAdi] AS alanlarınbirlesmishali
FROM tur INNER JOIN (bolum INNER JOIN alan ON bolum.BolumKodu = alan.BolumKodu) ON tur.TurKodu = alan.TurKodu
1 - 11 - 111 LİSE- DÜZ LİSE-fdgd
1 - 11 - 112 LİSE- DÜZ LİSE-dfdfg
Siz hayal edin...Biz yapalım TuannaSoft...
teşekkür ederim sql cümleciğini uyguladım. dbgrid içinde listeyi bir ekranda göremiyorum. birinci ekranda kodları, sağ ok tuşuna bastığımda ise alanları görüyorum. yani iki sütünlu bir yapıda 1.sütunu görebiliyorum. ikinci sütunu ise sağa ok tuşuna bastığımda görebiliyorum. halbuki bilgilerin uzunlukları kısa bu iki sütunu aynı anda göremiyorum