Sql joinde birde fazla detay satırı varsa

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Sql joinde birde fazla detay satırı varsa

Mesaj gönderen ikutluay »

Merhaba
bir türlü bu sorguya bir çözüm bulamadım.
bir yanda cari hareket tablosu bir yanda adresler tablosu var.
inner join yapamam çünkü her carinin adresi girilmiş durumda değil.
left joinde yaparsam iş karşıyor çünkü bir carinin birden fazla olabilir. aradaki bağlantı cari_kod alanı ile sağlanıyor. adresler ise adresno alanı ile ayırt ediliyor. left join yapıp where koşuluna adresno=1 dersem mantıksal olarak sorun yok ama bu seferde adresi girilmeyen kayıtlarda adresno diye birşey dönmediği için o satırlar sorgudan düşüyor.

geriye yapılacak ne kalıyor bu durumda.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Sql joinde birde fazla detay satırı varsa

Mesaj gönderen unicorn64 »

mesajınızı tam yorumlayamadım, left joinde neyden dolayı sorun oluyor ki?
sorgudan almak istediğiniz sonucu ve tablodaki belirleyici alanları yazarsanız birşeyler çıkar belki...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Sql joinde birde fazla detay satırı varsa

Mesaj gönderen sabanakman »

Neyi neye iliştireceğiz biraz karışmış. Sorudan anladığım her carinin birden fazla adres satırı var ve bunları hareket listesi ile birlikte listelemek sanırım. Burada ilk işlem basamağı tüm carileri listelemek ve her cari için bir adres satırının gelmesini sağlamak (select * from CARI_ADRES adresno in (select min(adresno) from CARI_ADRES group by cari_kod)). Böyle bir listeye hareketleri eklemek fazla sorun olmayacaktır.

Kod: Tümünü seç

select ana.*, adr.*, har.* from CARI as ana
left join
 (select * from CARI_ADRES where adresno in (select min(adresno) from CARI_ADRES group by cari_kod)) as adr
/*her cariye tek adres*/
 on ana.cari_kod=adr.cari_kod 
left join CARI_HAREKET as har on har.cari_kod=ana.cari_kod
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Re: Sql joinde birde fazla detay satırı varsa

Mesaj gönderen ikutluay »

allah allah . ben subselect ile yaptım diye mesaj atmıştım ama çıkmamış ?

tek sorun subselect te tek kolon döndüğü için 2 subselect kullanmak zorunda kalmamdı .
Şaban Akman 'ın cevabı gayet usta işiymiş. onu deneyeyim bilahare. 2 subselectten kurtulmuş olurum.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Cevapla