birden fazla tablodan veri çekmek

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

birden fazla tablodan veri çekmek

Mesaj gönderen csyasar »

merhaba,

yaşadığım sorun şu şekilde.

proje bir ticari yazılım. standart stok, cari, fatura ve kasa olan.

kasada şöyle bir problem var. lks kullandıysanız bilirsiniz. kasa işlemlerine baktığınızda listede 4-5 alan vardır. burda ACIKLAMA alanı vardır. kasa işlemi eğer Cari tahsilat ise CARI tablosundan müşteri ünvanını alır o açıklama alanına yazar. eğer banka işlemiyse banka tablosundan banka adını alır ACIKLAMA alanına yazar. Eğer gelir gider işlemi ise Gelir gider tablosundan acıklamayı alır buraya yazar. bunu nasıl yaparım standart sql ile(sp olaylarına girmeden)
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Join leri araştırabilirsin yada şarta göre gerekli tabloya yönelip verini çeker işlersin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

bunu veritabanında yapmana gerek yok bence. program çalışırken kullanıcı ne zaman rapor istese o zaman sql sorgu ile çekersin verileri olur biter.
zaten ideal veritabanı modellerinde primary ve foreign keyler dışında hiç bir alanın tekrar edilmemesi önerilir. yani aynı açıklamasıs hem banka hareketinde hem de kasa hareketinde olması pek tutarlı değil.
poshet303
Üye
Mesajlar: 235
Kayıt: 26 Eki 2005 01:15

Mesaj gönderen poshet303 »

bunu veritabanında yapmana gerek yok bence
Veritabanında yapmak daha güzel olur bence;
Join leri araştırabilirsin
Bunla olmaz. Ama
yada şarta göre gerekli tabloya yönelip verini çeker işlersin
Evet cevap bu. Fakat SQL ile yapmalı tabi.



Kod: Tümünü seç

select SARNO, case
  when TUR='Cari Tahsilat' then (select 'Musteri Ünvani:' || UNVAN from CARI C where C.MusNo = K.MusNo)
  when TUR='Banka İşlemi' then (select 'Banka Adı:' || UNVAN from BANKALAR B where B.BankaNo = K.BankaNo)
/*...*/
  else 'DEĞER Tanımsız'
 END AS ACIKLAMA
from KASA K
Tablo yapılarınızı bilmediğimden tahmin ile böyle bir şey yazdım kendi durumunuza uyarlayabilirsiniz.
TUR alanı (yada sizinki her neyse) sayısal olsa iyi olur ayrıca.

Kolay gelsin
Cevapla