SQL ile listeleme+kayit sayisi

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
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

SQL ile listeleme+kayit sayisi

Mesaj gönderen Uğur1982 »

merhaba arkadaslar ;

Asagidaki gibi bir SQL sorgumda 20 gibi bir kayit dönüyor.asil amacim ayni anda hem listeleme,hemde listelenen kayit sayisini bulmak.
"SELECT" ten sonra "COUNT(*)" falan ekliyorum çalismiyor.bu arada klavye biraz afalladi :)

Kod: Tümünü seç

SELECT 
   CARIKODTANIM.GRUPKOD,CARIKART.KOD,CARIKART.AD,      
   CARIKART.SOY,CARIKART.BSTK1,CARIKART.BSTK2,CARIKART.BSTK3
FROM CARIKODTANIM,CARIKART
WHERE CARIKART.KOD1=CARIKODTANIM.KODLAR 
AND 
   CARIKART.KOD1=40
tesekkür ederim
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Aslında queryinin RecCount undan dönen sonuç alınabiliyor ama herzaman sağlıklı olmuyor en sağlıklı çözüm için önce count dönürdüğün sorguyu çalıştırıp bi değişkene alıp sonra listelettiğin sorgunu çalıştırman.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Kod: Tümünü seç

SELECT
   CARIKODTANIM.GRUPKOD,CARIKART.KOD,CARIKART.AD,     
   CARIKART.SOY,CARIKART.BSTK1,CARIKART.BSTK2,CARIKART.BSTK3, (select Count(*) from tablo) as Toplam
FROM CARIKODTANIM,CARIKART
WHERE CARIKART.KOD1=CARIKODTANIM.KODLAR
AND
   CARIKART.KOD1=40 
Bu şekilde olması lazım ama Denemedim açıkcası. Mantık olarak tabi ;)

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba;

hüseyin hocam kod çalismiyor
verdii hata ( parantez hatasi
+ iki tane tablo var.CARIKART,CARIKODTANIM

Kod: Tümünü seç

(select Count(*) from tablo) as Toplam 

buradaki tablo ismi CARIKART' a mi yoksa CARIKODTANIM' mi ait
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

(select Count(*) from CARIKODTANIM,CARIKART WHERE CARIKART.KOD1=CARIKODTANIM.KODLAR ) as Toplam

Burada aslında select içinde select yapıp toplamı veren bir field oluşturduk.

Kolay Gelsin...

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ı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

AND
CARIKART.KOD1=40

kısmını da unutmamak lazım tabi, içe yazdığınız select ayrı bir döngü olarak çalışır ve her satırda çalıştırır bunu, bence önce tek birsefer çalıştırıp bir değişkene almanız daha hızlı olabilir, bir deneyin derim.
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

Hüseyin hocam mantikli gibi gözüküyor ama

( parantez hatasi veriyor yine.
SQL komutunun çogu yerinde denedim kimisinde 'as' hatasi veriyor.
"SELECT" ten sonra kullandim bi sefer "token unkown CARIKODTANIM" hatasi veriyor.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Veritabanın nedir ? Veritabanın desteklemiyor olabilir :idea: Ayrıca Naile Hanım ın verdiği yöntem daha mantıklı ben sadece SQL de yapılabileceğini söylemek için yazmıştım kafan karışmasın ;)

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Kullandığınız veritabanı nedir?
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

Firebird 1.5

+ olarak ben ilk önce naile hanimin dedigi gibi

1 sinde ilk önce listeleme
2. ise kayit sayisini bulduruyordum

acaba tek sorguyla yap1lamazm1 gibisinden sormustum
bayaa bi zaman kafama takilmisti bu
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

@husonet' in verdiği kod işinizi görmesi lazım, zira özellikle başka bi hata mı var diye test ettim çalışıyor, ancak her satıra bu değeri de ekliyor, eğer gridde görmek istemiyorsanaz gridi özelliştirmelisiniz bu durumda..

Kod: Tümünü seç

Select Alan1, Alan2, (Select Count(*) from TABLO) from TABLO
şeklinde...

Kolay gelsin.
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

arkadaslar sagolun kod çalisti ve dogru sonuc veriyor.hüseyin hocam sizin kodunuz saglam çalisiyor sadece KOD1 yerine KOD1_ID,KODLAR yerine KODLAR_ID yaptim çalisti.dalginligima gelmis.kusura bakmayin

Kod: Tümünü seç

SELECT 
  CARIKODTANIM.GRUPKOD,CARIKART.KOD,CARIKART.AD,
  CARIKART.SOY,CARIKART.BSTK1,CARIKART.BSTK2,CARIKART.BSTK3 ,
  (select Count(*) from CARIKODTANIM,CARIKART WHERE CARIKART.KOD1_ID=CARIKODTANIM.KODLAR_ID and  
CARIKART.KOD1_ID=40 ) as Toplam
  FROM CARIKODTANIM,CARIKART
  WHERE 
 CARIKART.KOD1_ID=CARIKODTANIM.KODLAR_ID 
and 
CARIKART.KOD1_ID=40 
herkese tesekkür ederim.
Cevapla