Detayı olan Master Kayıtları Listelemek

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Detayı olan Master Kayıtları Listelemek

Mesaj gönderen vkamadan »

Merhaba,
Yapmak istediğim sorgu şu işlemi yapmalı;
Ana - detay yapım var örneğin cariKartlar ve Carihareketler istediğim şey
CariHakraketi olan CariHesapKartları nı listelemek. Joinle yapmaya çalıştım ama olmadı.
Kullandığım kod, çalışıyor fakat istediğim sonucu döndürmüyor.

Kod: Tümünü seç

select hesapkart.*,hareket.cari_id from hesapkart inner join hareket on (hareket.cari_id=hesapkart.hes_id) 
where not isnull(hareket.cari_id)
Kolay gelsin iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

İçiçe select sorgusu ile alabilirsin volkan... İçteki sorguda hareket tablosunu sorgula HAREKET.CARI_ID ile HESAPKART.CARI_ID eşit olanlara göre dıştaki sorguyu listelet... Bir de Hareket teki kayıtları için not null kontrolü ekle.. Joinle olmaz..

Kod: Tümünü seç

select * from hesapkart  WHERE CARI_ID  IN(SELECT HAREKET.CARI_ID FROM HESAPKART,HAREKET WHERE HESAPKART.CARI_ID=HAREKET.CARI_ID AND HAREKET.CARI_ID IS NOT NULL) 
gibi...

Örnek yazdım koda güvenme... :lol:

Sevgiler...
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba sair
ilgin için teşekkür ederim fakat kod ile ilgili bir sorun var sanırım kullandığım kod,

Kod: Tümünü seç

select * from hesapkart  WHERE hesapkart.hes_id  IN(SELECT * FROM HAREKET WHERE hesapkart.hes_id=hareket.cari_id AND hareket.cari_id IS NOT NULL) 
aldığım hata mesajı

Kod: Tümünü seç

You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near......
Kullandığım MySQL VTYS nin versiyonu 4.0.18
Teşekkür ederim.
Volkan KAMADAN
www.polisoft.com.tr
onaydin

Mesaj gönderen onaydin »

select * from hareket diyemezsiniz.
Sadece bir kolon olması lazım.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba Onaydın
şimdi senin dediğin gibi tek alan seçerek denedim tekrar aynı hata mesajını aldım
Teşekkürler.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Hedef master tablonun listelenmesi ve Detay tabloda karşılık kayıtı olan satırlar ise; ortak key alanı ne ise onun Detay tabloda olup olmadığına bakılacak bir sql cümlesi yazılmalı; ayrıca detay tabloda belirli başka kriterlere de (tarih gibi) bakılabilir..

Kod: Tümünü seç

select * from hesapkart 
where hes_id in (select cari_id from hareket where cari_id = hesapkart.hes_id) 
kolay gelsin.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
onaydin

Mesaj gönderen onaydin »

Hata olarak yazdığınız kısım standart zaten near dan sonraki kısımda hatanın ne olduğu yazıyor.

Ayrıca @sair in belirttiği sql i kullanmamış ve yanlış aktarmışssınız
subquery de iki tablo var siz cümlenizde birini yazmışsınız.

FROM HESAPKART,HAREKET
FROM HAREKET
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Sayınrsimsek hocam,
Kod şeması aynen dediğiniz gibi uyguluyorum hatta bunu direk MySQL Front ta test ediyorum fakat aldığım mesaj yine hep aynı,

Kod: Tümünü seç

You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near ... yazdığım SQL kodu

Bu neden olmuyor çok basit bir Syntax oysaki desteklemiyor felan diyor sizce olaiblirmi?
Teşekkürler.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba kullandığım SQl kodu aşağıdaki gibi;

Kod: Tümünü seç

select * from hesapkart  WHERE hes_id  IN(SELECT HAREKET.CARI_ID FROM HESAPKART,HAREKET WHERE HESAPKART.HES_ID=HAREKET.CARI_ID AND HAREKET.CARI_ID IS NOT NULL) 
ama hatayı almaya devam ediyorum.
Volkan KAMADAN
www.polisoft.com.tr
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

MySQL de farklı kullanımı vardır belki... IN Syntax ını bi incelesene MySQL de..

Sevgiler..
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
onaydin

Mesaj gönderen onaydin »

MySQL de subquery tam olarak 4.1 sürümünde itibaren geliyor.
Bu sebeple belki sizdeki sürüm subquery i desteklemeiyor olabilir.
İlk yazdığınız sql deki insnull yerine ( belki orda null değilde boş bir ifade tutuluyordur) length(alan) > 1 veya alan > 0 gibi bir ifade ile denerseniz bi ihtimal çalıştırabilir.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

MySQL de IN kullanımını inceledim,

Kod: Tümünü seç

mysql> select 2 IN (0,3,5,'wefwf');
        -> 0
mysql> select 'wefwf' IN (0,3,5,'wefwf');
        -> 1
bizde bu şekilde kullanıyoruz daha önce şu şekilde bir kullanım yaptım sorun yoktu

Kod: Tümünü seç

select *from tablom where alan_adi in ('deger','deger2','deger3'.....)
ama sorgu sonucu olarak hiç kullanmadım.
Volkan KAMADAN
www.polisoft.com.tr
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

rşimşek hocam aşağıdaki kodu vermiş..

Kod: Tümünü seç

select * from hesapkart 
where hes_id in (select cari_id from hareket where cari_id = hesapkart.hes_id) 
Bu koddaki içteki select te hesapkart tablosunun cari_id si ile hareketin cari_ıd si eşitlenmiş.. Merak ettiğim şu içteki select sorgusunda hesapkart tablosu referans geçilmediği halde hesapkartın cari_id sini yakalayabilir mi ? Çünkü iç select te hesapkart a dair hiç bir referans yok. Nasıl yakalayacak ? Ben yakalayamaz diye ilk verdiğim kodda hesapkartı tablo olarak referans göstermiştim ama rşimşek hocam göstermemiş.. Denemedim ama merak ettim..

Sevgiler..
En son sair tarafından 03 Eyl 2004 10:16 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

kodu izninle biraz sadeleştireyim :wink: her şey ayan beyan ortaya çıksın.
İçteki select te tekrardan hesapkart demene gerek yok. Eğer dıştaki hesapkart tablosunu içteki select te de kulanacaksan ya ismiyle ya da hk diye bir alias verip kullanmalısın.

Kod: Tümünü seç

select * from hesapkart  hk
where hes_id  in (select cari_id from hareket where cari_id is not null and cari_id = hk.hesap_id) 

sonucu bildirirsen sevinirim.
En son rsimsek tarafından 03 Eyl 2004 10:25 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

Güzel... Bunu baştan niye demiyorsun be Hocam. Haybeye yavaşlatmışız programları... :lol:
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Cevapla