Üç tabloyu birleştirerek bir liste oluşturma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ekin
Üye
Mesajlar: 65
Kayıt: 11 Nis 2006 11:22

Üç tabloyu birleştirerek bir liste oluşturma

Mesaj gönderen ekin »

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
ekin
Üye
Mesajlar: 65
Kayıt: 11 Nis 2006 11:22

Mesaj gönderen ekin »

kusura bakmayın alan tablosunun görüntüsü şöyle olacak

alan için
111 1 11 sayısal
121 1 12 sözel
Kullanıcı avatarı
doctorfunks
Üye
Mesajlar: 105
Kayıt: 26 Oca 2005 10:37
Konum: İstanbul

Mesaj gönderen doctorfunks »

hocam şunu açarmısın biraz acaba... 3 table birleştirilir basit ama nası görmek istiyosun anlamadım
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

sql+join işlemini soruyor...arkadaş...
Siz hayal edin...Biz yapalım TuannaSoft...
poshet303
Üye
Mesajlar: 235
Kayıt: 26 Eki 2005 01:15

Mesaj gönderen poshet303 »

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.
ekin
Üye
Mesajlar: 65
Kayıt: 11 Nis 2006 11:22

Mesaj gönderen ekin »

kodno,kodadi,ilişkino

bu tip bir tablo yapısını biraz açarmısınız. Bu yöntemde nelere dikkat etmeliyim.
ekin
Üye
Mesajlar: 65
Kayıt: 11 Nis 2006 11:22

Mesaj gönderen ekin »

bu sistem için kullanacağım en ideal yöntem ile ilgili bana bilgi verebilirseniz çok sevinirim
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

veri tabanı ne
Siz hayal edin...Biz yapalım TuannaSoft...
ekin
Üye
Mesajlar: 65
Kayıt: 11 Nis 2006 11:22

Mesaj gönderen ekin »

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
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

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
bence sunu yapmaya çalış....
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...
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

şimdi mesajını tekrar okuyunca mevzu dahada basitleşti...

sen en iyisi veri tabnını gönder...bende sql yazmaya çalışayım...

ve en sonunda da nasıl yaptığımızı anlatırım...
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

arkadaşın bana gönderdiği veri tabanında ben sql kodunu yazdım....

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
Sonuc Şu sekilde oldu

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...
ekin
Üye
Mesajlar: 65
Kayıt: 11 Nis 2006 11:22

Mesaj gönderen ekin »

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
Cevapla