Mysqlde count ve group by işleminde hata alıyorum

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
Kullanıcı avatarı
kurthan
Üye
Mesajlar: 49
Kayıt: 29 Kas 2004 06:05
Konum: İstanbul
İletişim:

Mysqlde count ve group by işleminde hata alıyorum

Mesaj gönderen kurthan »

S.A.

iki tablom var ve bunları ilişkilendiriyorum.
Tablolarımın yapısı şu şekilde

Stok
----------
id
stkkod
Stokad

Stokhavuz
----------------
id
stkkod
depo
alis_fiyat


Bu işleme göre iki tabloyu ilişkilendirerek hangi depoda hangi stoktan kaç adet olduğunu bulmam gerekiyor.Stokhavuz tablosunda her bir kayıt 1 adet stok miktarını simgeliyor.(Böyle yapmamın sebebi x kodlu bir stoktan farklı parti girişlerinde geliş fiyatları farklı olabiliyor)


Bu işlem için yazdığım sql şu şekilde:

Select *,COUNT(stokhavuz.id) from stokhavuz,stok where stokhavuz.stkkod=stok.stkkod GROUP BY STKKOD,DEPO order by depo

bu sorgu normalde sorgu sonucunda 1 den fazla kayıt üretiyorsa sağlıklı çalışıyor.Fakat 1 sonuç üretmişse veya hiç sonuç yoksa aşağıdaki hatayı veriyor :

Myquery1:Type Mismatch for field ' Count(stokhavuz.id) expecting: Largeint Actual:integer

Bu sorun nereden kaynaklanıyor.

Teşekkür ediyor,iyi çalışmalar diliyorum.
Tarihtir adil hakem
Sen kadar mende Türk'em
Sense hür Türkiyemsin
Mense esir Kerkük'em


Atilla Yılmaz 2005 - Vaktidir
Kullanıcı avatarı
vampir261
Üye
Mesajlar: 298
Kayıt: 23 Kas 2004 03:22
Konum: Denizli

Mesaj gönderen vampir261 »

Select *,COUNT(stokhavuz.id) from stokhavuz,stok where stokhavuz.stkkod=stok.stkkod GROUP BY STKKOD,DEPO order by depo
oder by depo dan sonra ASC yada DESC yazman gerekmiyormu default olarak ASC mi alıyor yoksa. gerçi senin sorun bu değil ama.


GROUP BY STKKOD,DEPO HAVING (COUNT(stokhavuz.id) > 1)

having kısmını ekle belki çalışır
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Gruplama yaptığınızda gruplanan alanları select ile seçebilirsiniz sadece Select * demeniz burda hatalı yani.
Kullanıcı avatarı
kurthan
Üye
Mesajlar: 49
Kayıt: 29 Kas 2004 06:05
Konum: İstanbul
İletişim:

Teşekkür ederim ama sorun seçimde değil sonuçta

Mesaj gönderen kurthan »

S.A.

arkadaşlar having ile çözümlenemeyeceğini düşünüyorum.Çünkü sonuç 1 den büyükse gibi bir ibare var peki 1 uygun eşleşme olursa onu es mi geçecek.


Teşekkür ediyor,iyi çalışmalar diliyorum.
Tarihtir adil hakem
Sen kadar mende Türk'em
Sense hür Türkiyemsin
Mense esir Kerkük'em


Atilla Yılmaz 2005 - Vaktidir
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,
bu sorunu bende yaşıyorum farklı bir başlıkta sormuştum ama halen cevap alamadım.
İlginç bir durum.
Sorunun nerde olduğunu bende merak ediyorum.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
kurthan
Üye
Mesajlar: 49
Kayıt: 29 Kas 2004 06:05
Konum: İstanbul
İletişim:

Çözümü bu şekilde

Mesaj gönderen kurthan »

S.A
delphide veritabanındaki otomatik artan alanlar largeint olarak görülüyor.Bu alanların count işlemi içerisinde kullanılması (ki sebebini anlayamadım) sonucunda largeint olarak döndürülmesini sağlıyor.

otomatik artan alan yerine değeri boş geçilmeyecek başka bir alanın countunu aldığımda sonuç integer olarak gönderiliyor.

Kolay gelsin.
Tarihtir adil hakem
Sen kadar mende Türk'em
Sense hür Türkiyemsin
Mense esir Kerkük'em


Atilla Yılmaz 2005 - Vaktidir
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,
ben tablomdaki ID alanını yani hiçbir zaman boş olmayacak bir alanı COUNT ile saydırıyorum yinede sonuç sıfırsa sorun çıkıyor.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
kurthan
Üye
Mesajlar: 49
Kayıt: 29 Kas 2004 06:05
Konum: İstanbul
İletişim:

Farklı bi çözüm

Mesaj gönderen kurthan »

S.A.

Hocam bir önceki cevaptata problem var benim.

Şöyle çözdüm tabi pek pratik değil daha doğrusu angarya oluyor.

count işlemini yaptığım tabloyu ilk önce başka bir tableden açıyorum.Sonra kayıt sayısı uygunsa query ile sorguyu çalıştırıp raporluyorum ama tek kayıt veya kayıt yoksa tableden querysiz çekiyorum.

Kolay gelsin.
Tarihtir adil hakem
Sen kadar mende Türk'em
Sense hür Türkiyemsin
Mense esir Kerkük'em


Atilla Yılmaz 2005 - Vaktidir
Cevapla